vue 跨域相关问题

axios.interceptors.request.use(function (config) {
  store.commit('changeJsencrypt')
  console.log('请求拦截器');
  config.data = JSON.stringify(config.data)
  config.headers = {
    'checksign' : 'W6lAyK1V6j8eHfHXn3yem6eyTRslmkGv1AsIQD7d2mWqjqMn81ROK8YVdC31gnSyoo7OJBQIAZWKWxrbFzyiGZZH51Qs/ETuGb7QnxXGYExKWDDp1R6Xg2am7i13IhbKPqyJCGiuovtqrShjJQi8i0K9qH7lQpaFI/nXIvN48jU=',
    'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
  }
  return config;
}, function (error) {
  // Do something with request error
  return Promise.reject(error);
});

其中checksign是通过公钥加密的,服务端经过测试没问题,并且是允许这个参数的。

服务端:

图片描述

查了一些资料和尝试了解决仍然出现相同报错

实际上它是成功请求了的

图片描述

但是仍然报错

图片描述

Request header field checksign is not allowed by Access-Control-Allow-Headers in preflight response.

阅读 2.4k
3 个回答

单从报错信息来说,是checksign 这个字段错了。但是你说这个字段后端验证过是对的。那你到chrome的开发者工具里看一下,
clipboard.png

这里面有没有checksign,理论上应该是正确的,因为你预请求都是成功的。

那么问题很可能在后端,你可以叫他打印以下相关的参数。

因为没有遇到类似问题,以上回答仅供参考。

另外跨域相关:
简单的跨域可以用proxyTable(特别适用于开发环境)。

要配置服务端允许请求头里带上checksign这个字段

1 :vue 的话 你可以配置 本地代理 把本地的域名 端口指向后端所用的地址

2 最重要跨域的解决方案就是后台把 支持所以请求头 让他改为* 还有返回一块注意一下吧

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