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

Как мы знаем, сервис-воркер регистрируется в корне папки проекта, но есть ли способ получить некоторые статические ресурсы (css, js) из разных доменов?

Пример :

  • myWebsite.com // основной URL (например, index.html)
  • abc.com/css/style.css // путь к css-файлу
  • xyz.com/js/jsFile.js //путь к файлу javascript

person priti    schedule 24.11.2015    source источник


Ответы (2)


Любой запрос, поступающий со страницы (кроме подресурсов iframe), будет проходить через сервис-воркера. Эти ресурсы могут иметь одинаковое или разное происхождение. Вы можете кэшировать эти ресурсы, чтобы они были доступны в автономном режиме, однако как разработчик вы не можете манипулировать или проверять их содержимое, если ресурсы не имеют правильного набора заголовков CORS.

Например, в событии установки вы можете кэшировать удаленный файл, который не находится в вашем домене.

self.addEventListener('install', function(e) {
  e.waitUntil(
    caches.open('airhorner').then(function(cache) {
      return cache.addAll([
        'https://paul.kinlan.me/'
      ]);
    })
  );
});
person Kinlan    schedule 24.11.2015
comment
Просто для пояснения (потому что я думаю, что сталкиваюсь с похожей проблемой), когда вы говорите (ожидайте подресурсы iframe), вы хотели сказать.. ЗА ИСКЛЮЧЕНИЕМ подресурсов iframe? Потому что если это так, я нашел ответ, почему мои подресурсы iframe не обрабатываются :) - person Benjamin Solum; 17.06.2016

По умолчанию можно извлекать и кэшировать ресурсы из разных источников в соответствии с . спецификация:

сохраненные объекты [кросс-происхождения] являются объектами ответа с атрибутом типа, установленным на «непрозрачный» [...] менее выразительный API, чем ответы, типизированные «базовый»; тела и заголовки не могут быть прочитаны или установлены, как и многие другие аспекты их содержимого не проверены

person nikc.org    schedule 24.11.2015