vue-element-admin has been blocked by CORS policy: Response to preflight request doesn‘t pass access

在Vue应用中使用vue-element-admin框架时遇到CORS跨域问题,GET请求报错而POST请求正常。已尝试在request.js设置跨域,vue.config.js配置代理,以及在请求头添加no-cors,但问题仍未解决。最终发现注释掉request.js中X-Token的设置后,请求成功。这可能涉及到预检请求的Access-Control-Allow-Headers配置问题。

 

Access to XMLHttpRequest at 'http://xxx' from origin 'http://localhost:9528' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Google 翻译一下:

访问位于xxx 已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP正常状态。

使用vue-element-admin框架时明明设置了跨域,post请求正常,get请求就报错。网上查了很多资料说是CORS 跨域限制以及预请求验证

在请求后端时,已经被CORS策略阻止拦截:对于飞行请求的响应没有通过访问控制检查:在被预检请求的资源上没有被允许
需要在调用后, 配置文件中的跨域请求头中添加“author”,即可解决预飞行请求错误
# 配置跨越请求头
CORS_ALLOW_HEADERS = (
    'x-requested-with',
    'content-type',
    'token',
    'authorization',
    'author',
) 然而也没用。
———————————————— 

1. request.js 已设置跨域

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url 
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    Accept: 'application/json'
  }
})

2. vue.config.js设置proxy也没有用

3. user.js也试过加"no-cors"

export function getInfo(loginIdentifer) {
  return request({
    url: 'xxx/GetLoginInfo',
    method: 'get',
    // mode: 'no-cors',
    params: { loginIdentifer }
  })
}

尝试找一些请求头相关的,然后发现request.js 把config.headers['X-Token'] = getToken()注释居然可以调用成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值