Я использую XHR для получения HTML.Ответ HTML содержит элемент img, и это изображение по какой-то причине кэшируется.
Сервер обслуживает изображение вместе со следующими заголовками:
cache-control: no-cache, must-revalidate
content-security-policy: default-src 'self'; ...
content-type: image/png
date: Mon, 08 Oct 2018 03:41:00 GMT
expires: Sat, 26 Jul 1997 05:00:00 GMT
server: nginx (Ubuntu)
status: 200
strict-transport-security: max-age=30879000; includeSubDomains; preload
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
И XHR используется следующим образом:
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
addToPage(xmlHttp.responseText);
}
};
xmlHttp.open("GET", url, true);
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.send();
Пример ответа XHR:
<h1>Title</h1>
<p>Stuff</p>
<img src="/captcha-generator">
Работает, как и ожидалось, когда не используется XHR.По какой-то причине изображение кэшируется, когда оно связано с ответом XHR.
Почему изображение кэшируется и как заставить браузер получить новое изображение?
Я могуКонечно, добавьте уникальные параметры, чтобы сломать кеш (например, /captcha-generator?r={random-string}
, но я бы хотел этого избежать.