我正在使用ajax(Content-Type:application/x-www-form-urlencoded
)发布请求,我正在设置标头(function makePostRequest(url, data, headers, httpVerb, dataType, elementId) {
$.ajax({
url: url,
type: httpVerb,
data: data,
headers: headers,
dataType: dataType,
success: function(data, textStatus, jqXHR) {
$("#" + elementId).val(jqXHR.responseText);
alert(JSON.stringify(jqXHR));
},
error: function(jqXHR, textStatus, errorThrown) {
$("#" + elementId).val(jqXHR.responseText);
}
}).then(function(data, status, xhr) {
console.log(xhr.getAllResponseHeaders());
});
}
),我正在尝试读取响应的标头。这就是我所做的:
Content-Type: application/x-www-form-urlencoded; charset=utf-8
但是在控制台中只打印
{{1}}
如何获取所有这些标题?
PS:我使用的是Chrome,而不是Firefox()
我问如何获取所有标题,而不是为什么我只得到一个标题(如果不可能,我会接受这个答案)。
答案 0 :(得分:3)
所以,我正在发出CORS
请求,在这种情况下,出于安全原因,会过滤掉标头。
访问这些标头的唯一方法是在响应中包含一个标头Access-Control-Expose-Headers
,其中包含可以从javascript中读取的标头列表,您可以阅读here:
7.1.1处理对跨源请求的响应
用户代理必须过滤掉除此之外的所有响应标头 这是一个简单的响应标题或字段名称是一个 ASCII的不区分大小写匹配的值之一 在暴露之前,Access-Control-Expose-Headers标题(如果有的话) 响应标头到CORS API规范中定义的API。