我正在尝试从ajax请求获取响应头,但jQuery的getAllResponseHeaders xhr方法只显示“Content-Type”头。谁知道为什么?
这是响应标题
访问控制允许的凭据:真
Access-Control-Allow-Headers:If-Modified-Since,Cache-Control,Content-Type,Keep-Alive,X-Requested-With,Authorization
访问控制允许方法:GET,PUT,POST,DELETE,OPTIONS
访问控制允许来源:*
访问控制 - 最大 - 年龄:1728000
授权:apikey =“apikey1”AuthenticationToken =“62364GJHGJHG”
连接:保持活跃
内容长度:240
内容类型:应用/ JSON;字符集= UTF-8
X供电-通过:快递
这是成功函数
params.success = function (response, textStatus, jqXHR) {
console.log(jqXHR.getAllResponseHeaders())
}
这是它记录的内容......
Content-Type:application / json;字符集= UTF-8
答案 0 :(得分:12)
刚碰到这个。这是因为您正在执行CORS请求而您没有公开Location标头。
您需要在Express中为您的预检CORS响应添加Access-Control-Expose-Headers
:
res.header('Access-Control-Expose-Headers', 'Content-Type, Location');
res.send(200);
这将解决问题。
答案 1 :(得分:1)
根据以下内容
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
Access-Control-Expose-Headers响应标头通过列出其标头指示哪些标头可以作为响应的一部分公开。
默认情况下,仅公开7个CORS安全列出的响应标头:
Cache-Control
Content-Language
Content-Length
Content-Type
Expires
Last-Modified
Pragma
因此,这对于所有标头都可访问和公开的完美工作
res.header('Access-Control-Expose-Headers', '*');