Fetch API, расширение Chrome, контентный скрипт, разрешения CORS - PullRequest
0 голосов
/ 10 декабря 2018

Не знаю, заметил ли кто-либо еще это.

Создайте запрос XMLHttpRequest в скрипте содержимого в файл изображения:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(xhttp.getAllResponseHeaders());
    }
};
xhttp.open("HEAD", "https://www.gstatic.com/webp/gallery3/1.sm.png", true);
xhttp.send();

Вы получите следующее:

дата: вт, 27 ноября 2018 15:42:53 GMT x-content-type-options-options: nosniff последнее изменение: чт, 21 апр 2016 03:17:22 GMT сервер: sffe возраст: 1136854 варьироваться: Тип содержимого источника: image / png статус: 200 контроль кеша: общедоступный, max-age = 31536000 допустимые диапазоны: байты alt-svc: quic = ": 443";ма = 2592000;v = "44,43,39,35" длина содержимого: 48061 x-xss-protection: 1;режим = срок действия блока: ср., 27 ноября 2019 г. 15:42:53 GMT

Сделайте запрос выборки в скрипте содержимого для того же изображения:

fetch("https://www.gstatic.com/webp/gallery3/1.sm.png", {method: "HEAD"})
    .then(res => { 
        var headers = res.headers;
        headers.forEach(function(value, name) { console.log(`${name} : ${value}`);
     });

Вы получитеследующий назад:

контроль кэша: общедоступный, max-age = 31536000 Тип содержимого: image / png истекает: вт, 10 дек. 2019 20:12:24 GMT последнее изменение: чт, 21Апр 2016 03:17:22 GMT

Это связано со спецификациями W3 here , которые подтверждают мне, что fetch не полностью использует льготы по манифестам для разных источников дляРасширения Chrome.Однако, если вы делаете запрос get с помощью Fetch, он успешно выполняется.

Кто-нибудь знает, является ли это намеренным?

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