我们知道服务工作者是从项目文件夹的根目录注册的,但有没有办法从不同的域中获取一些静态资源(css,js)?
示例:
myWebsite.com
//主网址(例如index.html)abc.com/css/style.css
// css文件路径xyz.com/js/jsFile.js
// javascript文件路径答案 0 :(得分:5)
来自页面的任何请求(iframe子资源除外)都将通过服务工作者。这些资源可以来自相同或不同的来源。您可以缓存这些资源,以便它们可以脱机使用,但作为开发人员,除非资源具有正确的CORS标头集,否则您无法操作或检查它们的内容。
例如,在您的安装事件中,您可以缓存不在您域中的远程文件。
self.addEventListener('install', function(e) {
e.waitUntil(
caches.open('airhorner').then(function(cache) {
return cache.addAll([
'https://paul.kinlan.me/'
]);
})
);
});
答案 1 :(得分:1)
默认情况下,可以根据specification获取和缓存跨源资源:
存储的[cross-origin]对象是Response对象,其type属性设置为" opaque" [...]表达不如API的响应类型"基本&#34 ;;无法读取或设置主体和标题,也未检查其内容的许多其他方面