从http头响应中获取日期

7

好的,我可以使用以下方法访问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个回答

7

也许你正在进行CORS请求,由于安全原因,头信息被过滤掉了。

关于ajax请求中缺少响应头的类似问题,请参考以下内容。解决方案可能是在服务器响应中设置这个HTTP头:

Access-Control-Expose-Headers: Date

3
这很有帮助:
var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
alert(headers);

JavaScript中访问网页的HTTP头信息


它不会起作用,因为您无法使用“getAllResponseHeaders”或“getResponseHeader()”访问日期字段。Chrome会抛出一个错误:“拒绝获取不安全的标头“date””。 - stefbach

1
在你的成功方法中:
 success: function (data,status, xhr) {

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


},

如果响应成功
res=xhr.getResponseHeader('Date');

如果响应失败
res=data.getResponseHeader('Date');

我需要获取服务器的当前时间,它似乎在响应头中。 - EnderCode
检查一下,你没有回答我的问题,而且你删除了告诉我在JavaScript函数中给一个字符串类型参数的评论。我希望我可以给你投反对票。 - EnderCode
是的,在发布问题之前我已经尝试过了,它返回null,显然是因为它无法获取除我在问题中提到的那些细节以外的其他细节。 - EnderCode
如果我的问题不值得投票,你本来就不应该投票。如果你只是想表现友好,谢谢你。 - EnderCode
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - pearpages
它在console.log中也会返回null吗?对我来说有效。我知道这听起来很傻...但这只是尝试的问题。 - pearpages

0
如果您正在使用Nginx,您可以将以下代码放入Nginx配置文件中:
add_header 'Access-Control-Expose-Headers' 'Date';

实际配置示例:

location / {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Expose-Headers' 'Date';
    root /usr/local/nginx/html;
    index  index.html index.htm;
}

在重新启动您的nginx服务后,您可以再次调用getAllResponseHeaders函数,它将显示"Date"。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接