快递IE浏览器的请求周反复返回304(express returns 304 for IE repe

2019-07-31 06:43发布

我遇到ExpressJS的一些奇怪的行为。 上第二请求到我的node.js /表达它总是返回304未修改响应码IE基于API的URL。 其他浏览器获得200(铬/ FF)。 问题是,它返回304即使内容实际上已经改变。 我试图寻找,也找不到的话题什么。 此外,我试图找到在IE和Chrome的请求头一的差异,可以看出,可能导致任何头。 任何帮助将不胜感激。

我要补充的连接通过SSL去,万一它的事项

Answer 1:

缓存控制报头一种解决方法。 该缺陷是在HTTP 1.1规范的标头的Internet Explorer的解释。

我说这我的路由处理,这解决了这个问题。 您还需要一个Last-ModifiedETag头,但快递已经发出对我来说。

res.setHeader("Expires", "-1");
res.setHeader("Cache-Control", "must-revalidate, private");

请参阅: 让IE缓存资源,但始终重新验证



Answer 2:

有同样的问题我环顾了很多,事实证明,其实这个问题是来自阿贾克斯的愚蠢积极的缓存获得通过IE浏览器的请求。 事实上,当你看到这个304,实际的请求嗟服务器,但IE从他的缓存的最新数据作出响应。 这是通过MS预期的行为,并且因此仅存在的解决方法。

我的优选的是附加到各AJAX获取请求包含当前时间的无用的查询参数。 这将迫使IE浏览器总是从服务器检索。 的好处是,如果你使用jQuery,您可以将其自动配置到这个

$.ajaxSetup({cache:false})

另一个解决办法是使用POST请求,而不是GET,但这并不总是一个选择。



Answer 3:

好吧,我设法通过增加Cache-Control头进行修复



文章来源: express returns 304 for IE repeative requests