问题:
- 这段是我在main.js下设置的,为了在请求头上添加后端需要的参数sessionId 和xrequestedwith ,在谷歌下是正常的,
- ie报Access-Control-Allow-Headers 列表不存在请求表头 content-type;XMLHTTPRequest:网络错误 0x80070005,拒绝访问。
// 配置axios的请求拦截器
axios.interceptors.request.use(function(config) {// 在发送请求之前做些什么config.headers.sessionId = JSON.parse(localStorage.getItem("tokenSessionId"));config.headers.xrequestedwith = 'XMLHttpRequest';//区分ajax请求还是普通请求return config;},function(error) {// 对请求错误做些什么return Promise.reject(error);}
);
- 后端配置
原因:
ajax跨域请求,请求头不传token时,所有浏览器都能成功,在请求头中传token,在谷歌浏览器正常,在ie浏览器报错,因此可以得出是请求头token的问题,
解决:
标准的head,认证名字叫做Authorization,A要大写,但是在vue用axios跨域请求时,传的head名称为authorization,是小写,所以即使是设置版Access-Control-Allow-Headers为*,也无法识别。后台服务器设置Access-Control-Allow-Headers时不要直接写 * 号,应该写为authorization,Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,强制包含一个权authorization头即可。
参考ie跨越解决