vue 设置了简单请求,仍然存在跨域问题

1.前端浏览器报错如下:

Access to XMLHttpRequest at http://xxx.xxx from origin 'http://localhost:8000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

2.axios封装

封装代码

  1. 在封装基础做了修改
// 创建axios实例
const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 5000, // 请求超时时间
  headers: { 'Content-Type': 'multipart/form-data' }
})
//实例中加了headers(搜索说可以变为简单请求,不再发送options)
if (config.method === 'post') {
      config.data = qs.stringify({
        ...config.data
      })
    }
    // 拦截器加了这段代码格式化数据

但是做了修改,仍然初次会发一个options,并且options的请求为302

阅读 22.1k
3 个回答

已经采用proxyTable解决

proxyTable: {
      "/api": {
        target: "https://xxx.com",
        secure: false,
        changeOrigin: true,
        pathRewrite: {
          "^/api": ""
        }
      }
    },

baseUrl记得要设置=""为空

1.options请求是前端在发跨域请求的时候会先发起的预请求,这是浏览器的行为
2.后端应该处理一下options请求,不应该返回302,应该返回200,不然后续的get或者post请求就发不出去了

开发环境下Chrome可以设置允许跨域 百度下就知道了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题