XmlHttpRequest getAllResponseHeaders()不返回所有标头

scr*_*key 14 javascript cors express

我试图从ajax请求获取响应头,但jQuery的getAllResponseHeaders xhr方法只显示"Content-Type"头.谁知道为什么?

这是响应标头
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:If-Modified-Since,Cache-Control,Content-Type,Keep-Alive,X-Requested-With,Authorization
Access-Control -Allow-Methods:GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
授权:apikey ="apikey1"AuthenticationToken ="62364GJHGJHG"
连接:keep-alive
内容-Length:240
Content-Type:application/json; charset = utf-8
X-Powered-By:Express

这是成功的功能

params.success = function (response, textStatus, jqXHR) {
  console.log(jqXHR.getAllResponseHeaders())
}
Run Code Online (Sandbox Code Playgroud)

这就是它记录的
内容...... Content-Type:application/json; 字符集= utf-8的

Ben*_*esh 14

刚碰到这个.这是因为您正在执行CORS请求而您没有公开Location标头.

你需要Access-Control-Expose-Headers在Express中为你的预检CORS响应添加一个:

res.header('Access-Control-Expose-Headers', 'Content-Type, Location');
res.send(200);
Run Code Online (Sandbox Code Playgroud)

这将解决问题.


Clo*_*ver 6

根据以下

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
Run Code Online (Sandbox Code Playgroud)

因此,这对于所有标头都可以访问和公开来说非常有效

res.header('Access-Control-Expose-Headers', '*');
Run Code Online (Sandbox Code Playgroud)