我试图使我的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

[备注]
  • 我获取'https://MY_BUCKET.s3-eu-west-1.amazonaws.com/css/styles.css'
    会始终响应301,甚至是Chrome或Firefox。
  • 07-26 09:00
    查看更多