2012-01-11 65 views
2
$.ajax({ 
       async:false, 
       type: 'POST', 
       url: itemURL, 
       success: function(data,status,jqXHR) { 
        responseObj = data; 
        console.log('success function resp'); 
        console.log(jqXHR.getAllResponseHeaders()); 
       }, 
       error: function(data){ 
        responseObj = data; 
       }, 
       data:item, 
       dataType: "json", 

    }); 

這是我的代碼;我無法打印響應標題;我錯過了什麼?所有打印出來的都是空字符串。jquery:無法打印ajax響應頭(jquery 1.7.1)

嘗試使用getResponseHeader(「位置」),這也不工作;我正在嘗試獲取AJAX調用返回的「位置」標頭。

但firbeug顯示所有響應標題,包括我所在的「位置」。

我使用jQuery 1.7.1

+1

遵循重定向,最終響應根本沒有位置標題。 – ThiefMaster 2012-01-11 17:10:15

+0

數據類型可能導致此問題,請參閱此處:http://stackoverflow.com/questions/5614735/jqxhr-getallresponseheaders-wont-return-all-headers – Jon 2012-01-11 17:16:03

+0

@Jon dataType不是問題;試過json,application/json。問題仍然存在。我想這是關於「位置」標題的問題 – Satish 2012-01-11 18:48:04

回答

2

我@Satish幫助回答這個問題的工作。這基本上是一個CORS問題,但事實證明這裏涉及到兩個問題:

1)服務器需要將'Location'添加到Access-Control-Expose-Header響應標頭,這樣可以使符合XHR等級-2個客戶端來查看額外的頭文件。

2)WebKit客戶端一個錯誤,他們會在爲XHR響應返回標頭時忽略Access-Control-Expose-Header。 WebKit最近在https://bugs.webkit.org/show_bug.cgi?id=76419中修復了這個問題,我們證實它現在在基於WebKit的Safari中工作。

只是爲了添加一些背景,請求發送到REST服務以創建對象。服務器響應的狀態爲201,並將新資源的位置存儲在「位置」標題中。由於這是CORS請求,XHR正在剝離「位置」標題。添加標題並升級到帶有此修復程序的WebKit版本可以更正此問題。