XMLHttpRequest 调用不包括 If-Modified-Since header

XMLHttpRequest calls do not include If-Modified-Since header

我在服务器上有一个简单的缓存机制,它设置适当的 Last-Modified header 并对 If-Modified-Since header 做出反应。响应示例 headers 是:

Date: Tue, 17 Mar 2015 20:40:14 GMT
Last-Modified: Mon, 16 Mar 2015 09:47:28 GMT

我导航到该页面一次后,浏览器在请求中包含 If-Modified-Since header,服务器正确响应 304 状态。

但是,当我使用 jQuery 执行请求时(对于简单的 XMLHttpRequest 行为仍然存在),If-Modified-Since header 未发送。

最简单的重现代码是:

var xhr = new XMLHttpRequest();
xhr.open("get", "http://localhost/some/page.html", true);
xhr.send();

这种代码总是生成 200 响应,即使它之前已被缓存。我在 Firefox 36 和 Chromium 41 中观察到了这一点。

为什么 If-Modified-Since header 不包含在 XMLHttpRequest-originated 调用中?

这似乎是用户错误,因为我无法再重现它。