Поскольку XMLHttpRequest может получить вывод любого запроса, независимо от кода ответа, можно запросить изображение с помощью XMLHttpRequest, а затем преобразовать тип ответа большого двоичного объекта в изображение формата base64, которое можно загрузить в браузер. .
Прокси-сервер CORS, который я использовал в примере кода, может не понадобиться в большинстве случаев, но может быть полезен в случае, когда изображение, которое вы пытаетесь отобразить, имеет странные заголовки ответа, которые предотвращают доступ к изображение из другого домена.
Вот пример кода. Он должен работать независимо от кода ответа, CORS и т. Д. c.
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
// here, reader.result contains the base64-formatted string you can use to set the src attribute with
document.getElementsByTagName('img')[0].src = reader.result; // sets the first <img> tag to display the image, change to the element you want to use
};
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', "https://cors-anywhere.herokuapp.com/i.stack.imgur.com/8wB1j.png"); // don't include the HTTP/HTTPS protocol in the url
xhr.responseType = 'blob';
xhr.setRequestHeader('X-Requested-With', 'xhr');
xhr.send();
<img src="about:blank">
Все работает, например, когда вы go в Inspect Element, вы видите, что атрибут src
тега <img>
указывает на URL-адрес base64 который можно загрузить в любом браузере.