IE9收到ETag后伪造304

Posted

技术标签:

【中文标题】IE9收到ETag后伪造304【英文标题】:IE9 fakes 304 after receiving ETag 【发布时间】:2012-05-08 10:03:04 【问题描述】:

我遇到了 AJAX 和 Internet Explorer 9 的问题:它在收到对初始 etagged GET 的响应后停止轮询我们的服务器。

它假装发出带有响应的请求,例如“响应 HTTP/1.1 304 未修改,状态 200 OK”(是的,一个响应中有两个不同的状态代码)和相同的 ETag(应该随时间变化),但实际上没有一个出现在服务器日志中。

这个问题只出现在 IE 中,同样的代码在 Chrome 和 FF 中运行良好。

也许将 cache: false 传递给 jQuery.ajax() 可能会有所帮助,但我想知道是否有办法在服务器端解决问题。

我们的 ETag 使用可能有错误。

谢谢!

【问题讨论】:

【参考方案1】:

我想这篇文章对你有用: http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/

问题在于 AJAX 缓存。无论如何,如果有必要的请求,你应该禁止它。

【讨论】:

看起来服务器响应中的“Expires:-1”标头是我寻找的解决方案。谢谢!

以上是关于IE9收到ETag后伪造304的主要内容,如果未能解决你的问题,请参考以下文章

浏览器中回车(Enter)和刷新的区别

Chrome etag 总是显示 200 ok 但 curl 得到 304 未修改

为啥不能伪造 IP 地址?

交换机防范欺骗攻击

HTTP状态码304与ETag详解

HTTP状态码304与ETag详解