2017-01-18 117 views
1

我正在發送與ajax(CORS)的發佈請求,並且正在設置標題(Content-Type:application/x-www-form-urlencoded),並試圖讀取響應的標題。這裏是我做了什麼:ajax響應:無法讀取響應中的所有標題

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()); 
    }); 
} 

但在控制檯打印在Chrome開發者工具,我只看到

Content-Type: application/x-www-form-urlencoded; charset=utf-8 

和: enter image description here

如何獲得這些頭?

PS:我使用的是Chrome,火狐不()

我問怎麼讓所有的標題,不爲什麼我得到只有一個頭(如果它是不可能的,我會接受這個答案)。

+1

谷歌搜索'ajax get all headers'似乎能產生好的結果嗎? –

+1

[jqXHR.getAllResponseHeaders()可能的重複將不會返回所有標題](http://stackoverflow.com/questions/5614735/jqxhr-getallresponseheaders-wont-return-all-headers) –

回答

2

所以,我正在發出一個CORS請求,在這種情況下,出於安全原因將頭部過濾掉。

進入電影的標題的唯一方法是在響應包括頭Access-Control-Expose-Headers將包含可從JavaScript的讀取頭的列表,你可以閱讀here

7.1.1處理一個響應於跨源請求

用戶代理必須過濾掉比 是一個簡單的響應報頭或其中的字段名稱爲的值中的一個的 ASCII不區分大小寫匹配以外的所有響應頭的 在將 響應頭暴露給在CORS API規範中定義的API之前,請使用標頭(如果有)。