从http标头响应中获取日期

时间:2015-01-15 16:36:40

标签: javascript jquery ajax http-headers

好的,我可以使用

访问HTTP ajax响应头
xhr.getAllResponseHeaders();

但它似乎没有得到它的日期,尽管它在那里:

 [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);

    }
});

有没有办法在响应标题中获取日期?

4 个答案:

答案 0 :(得分:6)

可能是您发出CORS请求,并且出于安全原因过滤了标头。

另见missing response headers in ajax request的类似问题。 解决方案可能是在服务器响应中设置此HTTP标头:

Access-Control-Expose-Headers: Date

答案 1 :(得分: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

答案 2 :(得分:0)

在你的成功方法中:

 success: function (data,status, xhr) {

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


},

如果回复成功

res=xhr.getResponseHeader('Date');

如果响应失败

res=data.getResponseHeader('Date');

答案 3 :(得分:0)

如果您使用的是Nginx,则可以将以下代码放在Nginx配置文件中:

if(argc==1){
    newDir = getenv("HOME");

}else{
    if(strstr(argvv[1],"home") || strstr(argvv[1],"~")){
        newDir=argvv[1];
    }else{
    char * oldDir = getcwd(buf,sizeof(buf));
    newDir = strcat(oldDir, "/");
    newDir = strcat(newDir, argvv[1]);
    }
}


if(chdir(newDir)<0){
    //Error handler
}else
    printf("%s\n",getcwd(buf,sizeof(buf)));

return;

有关实际配置示例:

add_header 'Access-Control-Expose-Headers' 'Date';

重启nginx服务后,您可以再次调用getAllResponseHeaders,它将显示“日期”。

enter image description here