express returns 304 for IE repeative requests

前端 未结 3 495
暖寄归人
暖寄归人 2021-02-08 05:35

I\'m experiencing some strange behavior of ExpressJS. On second request to my node.js/express based API URL it always returns 304 Not Modified response code to IE. Other browser

相关标签:
3条回答
  • 2021-02-08 05:45

    The Cache-Control header is a workaround. The bug is in internet explorer's interpretation of the HTTP 1.1 spec for the header.

    I added this to my route handler, which solved the problem. You also need a Last-Modified or ETag header, but express was already sending that for me.

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

    See: Make IE to cache resources but always revalidate

    0 讨论(0)
  • 2021-02-08 05:47

    Having the same problem I look a lot around and it turns that in fact the problem comes from a stupid aggressive caching of ajax get requests by IE. In fact when you see this 304, the actual request never hits the server but IE responds with the latest data from his cache. This is intended behavior by MS, and thus there are only workarounds.

    My preferred is to attach to each ajax get request a useless query parameter containing the current time. It will force IE to always retrieve from the server. The nice part is if you use jQuery, you can configure it to this automatically with

    $.ajaxSetup({cache:false})
    

    Another work around is to use POST requests instead of GET, but this is not always an option.

    0 讨论(0)
  • 2021-02-08 05:57

    Well, I managed to fix it by adding Cache-Control header

    0 讨论(0)
提交回复
热议问题