我试图使我的Web应用程序与服务 worker 脱机工作,并遇到一个奇怪的问题。
我已经为我的应用程序定义了一些shell文件,例如guide on MDN
const cacheName = 'SiMo-v0.1';
const appShellFiles = [
'/index.html',
'/js/build/map.c6393552f9958cd32710.js',
'https://intermaps-lynx.s3-eu-west-1.amazonaws.com/css/menu.css',
];
self.addEventListener('install', (e) => {
console.log('[Service Worker] Install');
e.waitUntil(
caches.open(cacheName).then((cache) => {
console.log('[Service Worker] Caching all: app shell and content');
return cache.addAll(appShellFiles);
}),
);
});
安装该Service Worker失败,因为我从S3收到css文件的CORS错误。我已经确认存储桶上的CORS设置正确无误,并且还在Firefox似乎可以正常工作的Firefox中进行了测试。此外,我还尝试从开发人员工具运行
fetch('https://intermaps-lynx.s3-eu-west-1.amazonaws.com/css/menu.css')
。在Chrome中失败但在Firefox中也可以使用编辑:
正如评论中所建议的,我在帖子中包含了该站点中使用的实际CSS文件。
https://intermaps-lynx.s3-eu-west-1.amazonaws.com/css/menu.css
最佳答案
[改进]
对于CORS
如chrome上显示的错误消息所示,在request选项中添加{mode:'no-cors'}可以使chrome成功。
fetch('https://intermaps-lynx.s3-eu-west-1.amazonaws.com/css/menu.css', {
mode: 'no-cors'
})
查看更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
[备注]
会始终响应301,甚至是Chrome或Firefox。