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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
单从报错信息来说,是
checksign
这个字段错了。但是你说这个字段后端验证过是对的。那你到chrome的开发者工具里看一下,这里面有没有
checksign
,理论上应该是正确的,因为你预请求都是成功的。那么问题很可能在后端,你可以叫他打印以下相关的参数。
因为没有遇到类似问题,以上回答仅供参考。
另外
跨域
相关:简单的跨域可以用
proxyTable
(特别适用于开发环境)。要配置服务端允许请求头里带上checksign这个字段
1 :vue 的话 你可以配置 本地代理 把本地的域名 端口指向后端所用的地址
2 最重要跨域的解决方案就是后台把 支持所以请求头 让他改为* 还有返回一块注意一下吧