原因:跨域后系统为了安全去掉自定义头
解决方法:
通过给header允许前端访问 解决跨域后系统为了安全去掉自定义头,后端在返回response时给header加上 Access-Control-Expose-Headers
如下:
res.setHeader(“Access-Control-Expose-Headers”,“自定义头”);
//ajax 请求
$.ajax({
type: "post",
url: "http://xxxx",
success: function (data, textStatus, request) {
var a = request.getResponseHeader("自定义头")
console.log(a);
}
});
//原生js请求
var xhr;
if (window.XMLHttpRequest) {
//IE7+,Firefox,Chrome,Opera,Safari 执行
xhr = new XMLHttpRequest();
} else {
// IE6,IE5 执行
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
// GET 请求
xhr.open("GET", url, true);
xhr.send();
// 通过 onreadystatechange 事件来监听状态变化,并获取服务器响应
xhr.onreadystatechange = function () {
//请求成功时
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.getResponseHeader("自定义头"))
}
}
// axios 请求
this.$axios({
method: "post",
url: this.$path + "tests/batteryReportDownload/",
}).then(res => {
let headers = res.headers;
let fileName = headers["自定义头"]; #获取自定义头
});