Остановить изображение, которое связано в ответе XHR, от кэширования - PullRequest
0 голосов
/ 08 октября 2018

Я использую 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}, но я бы хотел этого избежать.

1 Ответ

0 голосов
/ 08 октября 2018

В случае режима разработки это происходит. Так что, если Google Crome перейдите в правый верхний угол, нажмите на Costomize и управляйте Google Crome. Затем откройте окно New inconginto для режима разработки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...