我遇到ExpressJS的一些奇怪行为。对第二次请求我的node.js/express API URL时,它总是返回304未修改的响应代码给IE。其他浏览器获得200(Chrome/FF)。问题是,即使内容实际上已被更改,它也会返回304。我试图搜索,并找不到有关该主题的任何内容。此外,我试图找到IE和Chrome的请求标题中的差异,并可能看到任何可能导致此问题的标头。任何帮助将不胜感激。针对IE重复请求快速返回304
我要补充的连接通过SSL去,万一它的事项
我遇到ExpressJS的一些奇怪行为。对第二次请求我的node.js/express API URL时,它总是返回304未修改的响应代码给IE。其他浏览器获得200(Chrome/FF)。问题是,即使内容实际上已被更改,它也会返回304。我试图搜索,并找不到有关该主题的任何内容。此外,我试图找到IE和Chrome的请求标题中的差异,并可能看到任何可能导致此问题的标头。任何帮助将不胜感激。针对IE重复请求快速返回304
我要补充的连接通过SSL去,万一它的事项
解决它的Cache-Control头是一种变通方法。该错误是在Internet Explorer中解释头部的HTTP 1.1规范。
我将此添加到我的路由处理程序,它解决了问题。您还需要一个Last-Modified
或ETag
标题,但快递已经发送给我了。
res.setHeader("Expires", "-1");
res.setHeader("Cache-Control", "must-revalidate, private");
有同样的问题我环顾了很多,事实证明,其实这个问题是来自阿贾克斯的愚蠢积极的缓存获得通过IE浏览器的请求。事实上,当你看到这个304时,实际请求永远不会访问服务器,但IE会响应来自其缓存的最新数据。这是MS的预期行为,因此只有解决方法。
我的首选是为每个ajax get请求附加一个包含当前时间的无用查询参数。它将强制IE始终从服务器中检索。的好处是,如果你使用jQuery,您可以用
$.ajaxSetup({cache:false})
另一个解决办法是使用POST请求,而不是把它配置到这个自动,但这并不总是一个选择。
你如何确定IE获得的响应代码? – josh3736
+1我有同样的问题! – Erik
josh3736,我正在检查网络登录IE开发者工具 – bbbonthemoon