ajax响应:无法从响应中读取所有标头

时间:2017-01-18 15:23:21

标签: ajax response-headers

我正在使用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}}

在Chrome开发者工具中,我看到: enter image description here

如何获取所有这些标题?

PS:我使用的是Chrome,而不是Firefox()

我问如何获取所有标题,而不是为什么我只得到一个标题(如果不可能,我会接受这个答案)。

1 个答案:

答案 0 :(得分:3)

所以,我正在发出CORS请求,在这种情况下,出于安全原因,会过滤掉标头。

访问这些标头的唯一方法是在响应中包含一个标头Access-Control-Expose-Headers,其中包含可以从javascript中读取的标头列表,您可以阅读here

  

7.1.1处理对跨源请求的响应

     

用户代理必须过滤掉除此之外的所有响应标头   这是一个简单的响应标题或字段名称是一个   ASCII的不区分大小写匹配的值之一   在暴露之前,Access-Control-Expose-Headers标题(如果有的话)   响应标头到CORS API规范中定义的API。