2015-12-23 113 views
7

我使用下面的代碼AJAX調用如何獲得響應頭在AJAX

$.ajax({ 
     type: "POST", 
     url: "http://******/cxf/view/*****", 
     data: {*****}, 
     headers: {*****}, 
     success: function (dt, status, request) { 
      console.log(request.getAllResponseHeaders()); 

     }, 
     error: function (jqXHR, status) { 

     } 
    }); 

這僅打印內容類型。在開發者控制檯中,我可以看到響應中的標題數量。我怎樣才能獲得這些頭在AJAX

enter image description here

+0

您可以在ajax設置中使用'dataType'。意味着你可以改變你想要的數據類型'json,xml等' – softsdev

+0

@softsdev我應該在dataType中給出什麼? –

+0

請檢查http://stackoverflow.com/questions/11440918/jquery-get-ajax-response-headers?answertab=active#tab-top –

回答

3

我用你用

success: function (dt, status, request) { 
      console.log(request.getAllResponseHeaders()); 

問題是不是與jQuery或阿賈克斯相同代碼。響應頭由Server設置。您發送請求的服務器沒有設置標題!簡單!!!!

當我試圖用我的服務器[模糊的安全有些回覆] 我得到了下面的輸出

Snap of Console output

+0

開發者控制檯如何顯示這些頭? –

+0

@AnoopLL您應該在返回響應時設置響應的標題。如果它確定你可以告訴我cfx/view的代碼? –

+0

我在我的問題中添加了一個圖像。其實我們正在使用休息電話和它的跨域。您可以在該映像中看到響應標題,這些標題是從服務器設置的。 –

12

這似乎是沒有問題的。我試過,並得到它的作品。

使用JSONPlaceholder這裏是我的代碼

$.ajax({ 
    url: root + '/posts/1', 
    headers: {'test': 'test'}, 
    method: 'GET' 
}).then(function(data, status, xhr) { 
    console.log(xhr.getAllResponseHeaders()); 
}); 

結果是

Pragma: no-cache 
Date: Wed, 23 Dec 2015 06:36:57 GMT 
Via: 1.1 vegur 
X-Content-Type-Options: nosniff 
Server: Cowboy 
X-Powered-By: Express 
Vary: Origin 
Content-Type: application/json; charset=utf-8 
Cache-Control: no-cache 
Access-Control-Allow-Credentials: true 
Content-Length: 292 
Etag: W/"124-yv65LoT2uMHrpn06wNpAcQ" 
Expires: -1 
+0

檢查我更新的問題。響應標題顯示在開發人員控制檯中。 –

5

在您的服務器,您需要添加

res.header("Access-Control-Expose-Headers", "header-you-want-to-expose"); 

,然後你就可以訪問它在瀏覽器中。

+0

爲什麼這是downvoted? –

+0

@ ZachSmith也許downvoter冒充了推測的服務器技術(node?),儘管在這種情況下它可以很容易地轉移到任何其他服務器上 - 所以這在我看來是不合適的。 – John

+0

添加此標題是答案。雖然OP沒有具體說明它是一個交叉源請求,但它的屏幕截圖中顯示的是CORS頭文件。從我+1。 –