You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取AJAX响应中的Authorization响应头?

排查jQuery AJAX无法获取Authorization响应头的问题

你遇到的getResponseHeader('Authorization')返回null的情况,最常见的原因是跨域资源共享(CORS)的限制,不过也有其他可能性,我帮你逐个分析:

1. CORS暴露头限制(最可能的原因)

浏览器在处理跨域请求时,出于安全考虑,默认只会让前端访问「简单响应头」(比如Content-Type、Cache-Control、Last-Modified等)。像Authorization这类非简单头,必须由服务器明确通过Access-Control-Expose-Headers响应头指定允许暴露给前端,否则浏览器会隐藏这个头,导致你用getResponseHeader获取到null。

解决办法:

需要后端在响应中添加这个头:

Access-Control-Expose-Headers: Authorization

如果后端还需要暴露其他非简单头,可以用逗号分隔,比如:

Access-Control-Expose-Headers: Authorization, X-Custom-Header

2. 服务器未实际返回Authorization响应头

先确认服务器真的在响应里包含了Authorization头。你可以通过浏览器开发者工具验证:

  • 按下F12打开开发者工具,切换到「Network」面板
  • 找到你发送的这个POST请求,点击查看「Response Headers」部分
  • 检查是否存在Authorization字段

如果这里看不到这个头,那问题出在后端服务,需要调整后端逻辑,确保在响应中添加该头。

3. 拼写或大小写问题(可能性较低)

虽然getResponseHeader方法是不区分大小写的,但还是要确认你请求的头名称和服务器返回的完全一致(比如有没有把Authorization写成Authroization这类拼写错误)。不过从你的代码看,拼写是正确的,这个可能性比较小。

额外验证建议

你可以尝试用原生XMLHttpRequest替代jQuery AJAX测试,看看是否能获取到该头,排除jQuery封装的影响:

const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://api.myapi.com/v1/post/', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
  console.log(xhr.getAllResponseHeaders());
  console.log(xhr.getResponseHeader('Authorization'));
};
xhr.send(JSON.stringify(body));

如果原生XHR也无法获取,那基本可以确定是CORS或服务器端的问题。

内容的提问来源于stack exchange,提问作者Siddiqui Noor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:49:36