我遇到ExpressJS的一些奇怪的行为。 上第二请求到我的node.js /表达它总是返回304未修改响应码IE基于API的URL。 其他浏览器获得200(铬/ FF)。 问题是,它返回304即使内容实际上已经改变。 我试图寻找,也找不到的话题什么。 此外,我试图找到在IE和Chrome的请求头一的差异,可以看出,可能导致任何头。 任何帮助将不胜感激。
我要补充的连接通过SSL去,万一它的事项
我遇到ExpressJS的一些奇怪的行为。 上第二请求到我的node.js /表达它总是返回304未修改响应码IE基于API的URL。 其他浏览器获得200(铬/ FF)。 问题是,它返回304即使内容实际上已经改变。 我试图寻找,也找不到的话题什么。 此外,我试图找到在IE和Chrome的请求头一的差异,可以看出,可能导致任何头。 任何帮助将不胜感激。
我要补充的连接通过SSL去,万一它的事项
缓存控制报头是一种解决方法。 该缺陷是在HTTP 1.1规范的标头的Internet Explorer的解释。
我说这我的路由处理,这解决了这个问题。 您还需要一个Last-Modified
或ETag
头,但快递已经发出对我来说。
res.setHeader("Expires", "-1");
res.setHeader("Cache-Control", "must-revalidate, private");
请参阅: 让IE缓存资源,但始终重新验证
有同样的问题我环顾了很多,事实证明,其实这个问题是来自阿贾克斯的愚蠢积极的缓存获得通过IE浏览器的请求。 事实上,当你看到这个304,实际的请求嗟服务器,但IE从他的缓存的最新数据作出响应。 这是通过MS预期的行为,并且因此仅存在的解决方法。
我的优选的是附加到各AJAX获取请求包含当前时间的无用的查询参数。 这将迫使IE浏览器总是从服务器检索。 的好处是,如果你使用jQuery,您可以将其自动配置到这个
$.ajaxSetup({cache:false})
另一个解决办法是使用POST请求,而不是GET,但这并不总是一个选择。
好吧,我设法通过增加Cache-Control头进行修复