jQuery Ajax 访问自定义响应 headers
jQuery Ajax access custom response headers
我正在使用一些 API,我注意到在回复中我有这样的:
我需要阅读 "x-dl-units-left",但我得到的是空值:
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){
var left = xhr.getResponseHeader("x-dl-units-left"); //null
var all = xhr.getAllResponseHeaders(); // "content-type: application/json;charset=UTF-8"
});
谁知道为什么?? :(
谢谢
问题是因为请求正在使用 CORS。因此,您需要明确允许您的自定义 header 暴露给收件人。为此,请在响应中添加 Access-Control-Expose-Headers
header,例如:
Access-Control-Expose-Headers: x-dl-units-left, x-dl-units, [other headers as needed...]
请注意,这必须在创建响应的服务器上完成。如果您没有服务器的控制权,那么您将无法进行此更改。您需要向 API 提供商请求。
未提及您的访问说明符,因此它确实存储但在一些不为人知的地方。现在你需要先初始化它。
为了更好的初始化:
回应
Acccess-Control-Expose-Headers: x-dl-units-left;
在客户端
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){
var all = xhr.getAllResponseHeaders();
// "content-type: application/json;charset=UTF-8"
});
我正在使用一些 API,我注意到在回复中我有这样的:
我需要阅读 "x-dl-units-left",但我得到的是空值:
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){
var left = xhr.getResponseHeader("x-dl-units-left"); //null
var all = xhr.getAllResponseHeaders(); // "content-type: application/json;charset=UTF-8"
});
谁知道为什么?? :(
谢谢
问题是因为请求正在使用 CORS。因此,您需要明确允许您的自定义 header 暴露给收件人。为此,请在响应中添加 Access-Control-Expose-Headers
header,例如:
Access-Control-Expose-Headers: x-dl-units-left, x-dl-units, [other headers as needed...]
请注意,这必须在创建响应的服务器上完成。如果您没有服务器的控制权,那么您将无法进行此更改。您需要向 API 提供商请求。
未提及您的访问说明符,因此它确实存储但在一些不为人知的地方。现在你需要先初始化它。 为了更好的初始化:
回应
Acccess-Control-Expose-Headers: x-dl-units-left;
在客户端
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){
var all = xhr.getAllResponseHeaders();
// "content-type: application/json;charset=UTF-8"
});