interview
advanced-vue
什么是跨域在 Vue 项目中你是如何解决跨域问题的

Vue 进阶面试题, 什么是跨域?在 Vue 项目中你是如何解决跨域问题的?

Vue 进阶面试题, 什么是跨域?在 Vue 项目中你是如何解决跨域问题的?

QA

Step 1

Q:: 什么是跨域?

A:: 跨域是指浏览器出于安全性的考虑,阻止网页从一个域加载来自另一个域的资源。通常,当请求的协议、域名或端口与当前页面不同,便会产生跨域问题。

Step 2

Q:: 在 Vue 项目中如何解决跨域问题?

A:: 在 Vue 项目中,跨域问题通常通过以下几种方法来解决: 1. 使用代理服务器:在开发环境中,可以使用 Vue CLI 提供的 devServer.proxy 配置,通过代理服务器转发请求到目标服务器。 2. 使用CORS:在后端服务器上启用跨域资源共享(CORS),允许来自指定源的请求。 3. JSONP:尽管 JSONP 只能用于 GET 请求,但它是一种老式的跨域解决方案,通常用于支持旧的浏览器。 4. 后端中转:将跨域请求发送到自己的服务器,然后由服务器向外部服务器发送请求,返回结果给前端。

Step 3

Q:: Vue CLI 中的 devServer.proxy 如何配置?

A:: 在 vue.config.js 文件中,可以通过 devServer.proxy 配置代理服务器。例如:

 
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://example.com',
        changeOrigin: true,
        pathRewrite: {'^/api' : ''}
      }
    }
  }
}
 

在此配置中,所有 /api 开头的请求将被代理到 http://example.com

用途

跨域问题是前端开发中常见的问题,特别是在与不同域的后端服务进行交互时。在面试中考察这个内容,旨在评估候选人对浏览器安全机制的理解以及解决跨域问题的能力。这些知识在开发单页面应用(SPA)、整合第三方服务或在前后端分离架构中非常关键。\n

相关问题

🦆
什么是同源策略?

同源策略是一种浏览器的安全机制,指的是只有当协议、域名和端口相同时,浏览器才允许一个域的脚本访问另一个域的资源。它用于防止不同来源的恶意脚本窃取敏感数据。

🦆
什么是CORS?如何在后端配置CORS?

CORS(跨域资源共享)是一种机制,允许浏览器向不同源的服务器发出请求。后端可以通过设置响应头中的 Access-Control-Allow-Origin 来启用 CORS。例如,在 Node.js 的 Express 框架中可以这样配置:

 
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});
 
🦆
什么是JSONP?其工作原理是什么?

JSONP(JSON with Padding)是一种跨域解决方案,它通过动态创建 <script> 标签请求跨域资源,并在请求完成后执行回调函数来获取数据。由于 <script> 标签不受同源策略限制,JSONP 成为一种早期的跨域解决方案,但只能用于 GET 请求。

🦆
Vue 项目如何处理请求的错误状态码?

在 Vue 项目中,可以使用拦截器处理请求的错误状态码。在使用 Axios 时,可以通过配置 axios.interceptors.response 来捕获请求的错误状态,并根据状态码执行相应的逻辑。例如:

 
axios.interceptors.response.use(response => response, error => {
  if (error.response.status === 401) {
    // 未授权,跳转到登录页
  } else if (error.response.status === 500) {
    // 服务器错误,提示用户稍后再试
  }
  return Promise.reject(error);
});