如何解决跨域问题?

433 阅读1分钟

跨域通常报错如下

image.png

达成 跨域报错的条件

若A地址和B地址协议域名端口不全相同,就说明请求是跨域的(跨域请求不一定会报错)

跨域请求报错的条件:浏览器的同源策略 和 请求是ajax类型 (只要破坏其中之一就不会报错)

跨域解决方法:

  1. cors Chrome浏览器的扩展(仅限个人开发使用)

  2. 后端写代码(cors)在响应中添加必要的响应头,响应回来之后浏览器不报错

  3. 代理转发(将请求发送给代理服务器,代理服务器处理跨域后再发送给目标服务请求以 /API 开头)

后端的处理方法

image.png

代理转发方式:vue项目中跨域的解决方法

1. 将开发基地址改为本地地址:'/api' (必须写入/api)

2. 在vue.config.js中加入代码

proxy: {
        // 如果请求地址以/api打头,就出触发代理机制
        // http://localhost:9588/api/login -> http://localhost:3000/api/login
        '/api': {
          target: 'http://localhost:3000' // 我们要代理的真实接口地址
      }
 }

3. 一定要将mock请求地址注释掉 否则也会出错

// before: require('./mock/mock-server.js')

4. 在request中的baseURL写为:

baseURL: process.env.VUE_APP_BASE_API, // 设置axios请求的基础的基础地址

致敬我当码农的每一天!!!