我正在使用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}
,但我想避免这种情况。
答案 0 :(得分:-1)
在“开发”模式下会出现提示。因此,如果是Google crome,请转到右上方 在角落点击costomize并控制google crome,然后在New inconginto窗口中打开 用于开发模式