小编abu*_*abu的帖子

如果响应是404,如何使用Service Worker来缓存跨域资源?

W3:

6.2跨源资源和CORS
应用程序倾向于缓存来自CDN或其他来源的项目.可以直接使用<script>, <img>, <video><link>元素请求其中许多.如果这种运行时协作在离线时破坏,那将是极大的限制.类似地,当设置适当的CORS头时,XHR可能有许多种类的非原始资源.

ServiceWorkers通过允许Caches获取和缓存非原始项来实现此功能.但是,有一些限制.首先,与在Cache中作为Response属性设置为"basic"的Response对象管理的同源资源不同,存储的对象是类型属性设置为"opaque"的Response对象.类型为"opaque"的响应提供的API比响应类型为"basic"的表达要少得多; 无法读取或设置主体和标题,也不检查其内容的许多其他方面.它们可以以与响应类型为"基本"相同的方式传递给event.respondWith(r)方法,但不能以编程方式有意义地创建.这些限制对于保留平台的安全不变量是必要的.允许缓存存储它们允许应用程序在大多数情况下避免重新构建.

我已将CORS标题设置为:

Access-Control-Allow-Origin:https://xxx.xx.x.com
Access-Control-Allow-Credentials:true
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个"不透明"的响应,我无法确保代码是200.如果我缓存这些不成功的响应,它将导致一些问题.

例如,一个网络密码导致404到跨域资源,并且我将其缓存,然后在网络问题得到纠正时,我将始终使用此404缓存响应.同源资源没有这个问题.

javascript caching cross-domain service-worker

8
推荐指数
1
解决办法
1万
查看次数

Service Worker 缓存存储的大小限制是多少?

Local Storage 的大小限制为 5M,在 Service Worker 中使用时是否有 Cache Storage 的限制?

javascript service-worker

8
推荐指数
2
解决办法
1万
查看次数