2015-01-15 229 views
2

好了,所以我可以訪問使用從HTTP標頭響應獲取日期

xhr.getAllResponseHeaders(); 

的HTTP Ajax響應頭,但它似乎並沒有得到它的日期,但它的存在:

[Chrome] 
**Response Header** 
Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Content-Length:8092 
Content-Type:application/json; charset=utf-8 
**Date:Thu, 15 Jan 2015 16:30:13 GMT** 
Expires:-1 
Pragma:no-cache 
Server:Microsoft-IIS/8.0 
TotalCount:116 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 

和代碼只能說明這一點:

[output on alert xhr.getAllResponseHeaders();] 

Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: application/json; charset=utf-8 
Expires: -1 

這裏的Ajax調用:

$.ajax({ 
     url: url, 
     type: "GET", 
     contentType: "application/json;charset=utf-8", 
     async: true, 
     success: function (data,status, xhr) { 

     displayNewData(data); 
     alert(xhr.getAllResponseHeaders()); 

    }, 
    error: function() { 
    alert(url); 

    } 
}); 

有沒有一種方法可以在響應頭中獲取日期?

回答

2

這有助於:

var req = new XMLHttpRequest(); 
req.open('GET', document.location, false); 
req.send(null); 
var headers = req.getAllResponseHeaders().toLowerCase(); 
alert(headers); 

Accessing the web page's HTTP Headers in JavaScript

+0

它不會工作,因爲你不能訪問日期字段使用'getAllResponseHeaders'或'getResponseHeader()' Chrome拋出一個錯誤「拒絕獲取不安全的標題」日期」' – stefbach 2015-09-30 05:33:26

0
在你的成功方法

success: function (data,status, xhr) { 

    console.log(xhr.getResponseHeader('Date')); 


}, 

如果響應是成功的

res=xhr.getResponseHeader('Date'); 

如果響應失敗

res=data.getResponseHeader('Date'); 
+0

我需要得到這似乎是在響應頭 – EnderCode 2015-01-15 16:45:21

+0

-_-嚴重... – EnderCode 2015-01-15 17:04:34

+0

檢查什麼服務器的當前時間,你沒有回答我的問題,並且你刪除了你的評論,告訴我給一個javascript函數的String類型的參數。我希望我可以投票給你。 – EnderCode 2015-01-15 18:38:53

3

可能出現這種情況,您正在發出CORS請求,並且出於安全原因過濾掉了標頭。

另請參見關於missing response headers in ajax request的相似問題。 的解決方案可能是設置此HTTP標頭在服務器響應:

Access-Control-Expose-Headers: Date