为IE重复请求表示返回304

我遇到ExpressJS的一些奇怪的行为。 在第二次请求我的node.js / express基于API的URL时,它总是返回304未修改的响应代码给IE。 其他浏览器得到200(铬/ FF)。 问题是,即使内容实际上已经改变,它也会返回304。 我试图search,并没有find任何关于这个话题。 此外,我试图find不同的IE和Chrome的请求头,可以看到任何头可能会导致这一点。 任何帮助将不胜感激。

我必须通过SSL添加连接,以防万一

有同样的问题,我看了很多,事实上,问题来自一个愚蠢的积极caching的Ajax获取请求由IE浏览器。 事实上,当你看到这个304时,实际的请求永远不会到达服务器,但是IE响应来自其caching的最新数据。 这是MS的预期行为,因此只有解决方法。

我的首选是附加到每个Ajax获取请求包含当前时间的无用查询参数。 这将迫使IE浏览器始终从服务器上检索。 好的部分是,如果你使用jQuery,你可以使用自动configuration

$.ajaxSetup({cache:false}) 

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

caching控制标头一种解决方法。 这个错误是在Internet Explorer的头文件HTTP 1.1规范的解释。

我把它添加到我的路由处理程序,这解决了这个问题。 你还需要一个Last-Modified或者ETag头,但是express已经为我发送了。

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

请参阅: 使IEcaching资源,但始终重新validation

好吧,我设法通过添加Cache-Control头来修复它