bbb*_*oon 11 internet-explorer node.js express
我遇到了一些ExpressJS的奇怪行为.在对我的node.js/express基于API的URL的第二次请求时,它总是向IE返回304 Not Modified响应代码.其他浏览器获得200(Chrome/FF).问题是,即使内容实际已被更改,它也会返回304.我试图搜索,但在这个主题上找不到任何东西.此外,我试图找到IE和Chrome的请求标头的差异,并可以看到任何可能导致这种情况的标头.任何帮助将不胜感激.
我必须通过SSL添加连接,以防万一
Cache-Control标头是一种解决方法.该错误是在Internet Explorer中对标头的HTTP 1.1规范的解释.
我把它添加到我的路由处理程序,它解决了这个问题.你还需要一个Last-Modified
或ETag
标题,但快递已经发送给我了.
res.setHeader("Expires", "-1");
res.setHeader("Cache-Control", "must-revalidate, private");
Run Code Online (Sandbox Code Playgroud)
请参阅:使IE缓存资源,但始终重新验证
有同样的问题我看了很多,事实上,问题来自IE的ajax get请求的愚蠢积极缓存.实际上,当您看到304时,实际请求永远不会到达服务器,但IE会使用其缓存中的最新数据进行响应.这是MS的预期行为,因此只有解决方法.
我首选的是为每个ajax get请求附加一个包含当前时间的无用查询参数.它将强制IE始终从服务器检索.好的部分是如果你使用jQuery,你可以自动配置它
$.ajaxSetup({cache:false})
Run Code Online (Sandbox Code Playgroud)
另一个解决方法是使用POST请求而不是GET,但这并不总是一个选项.
归档时间: |
|
查看次数: |
4658 次 |
最近记录: |