Javascript 如果响应为404,如何使用服务工作者缓存跨域资源?
w3: 6.2跨来源资源和CORJavascript 如果响应为404,如何使用服务工作者缓存跨域资源?,javascript,caching,cross-domain,service-worker,Javascript,Caching,Cross Domain,Service Worker,w3: 6.2跨来源资源和COR 应用程序倾向于缓存来自CDN或其他来源的项目。 可以使用, 和元素。如果这种运行时 脱机时协作中断。 类似地,在以下情况下,可以XHR许多种类的非原始资源: 设置了适当的CORS标头 ServiceWorkers通过允许缓存从源服务器获取和缓存来实现这一点 项目。然而,也有一些限制。首先,与同源资源不同 它们在缓存中作为响应对象管理,并设置了type属性 对于“基本”,存储的对象是设置了type属性的响应对象 “不透明”。“不透明”类型的响应提供的API远不如
应用程序倾向于缓存来自CDN或其他来源的项目。 可以使用
,
和
元素。如果这种运行时
脱机时协作中断。
类似地,在以下情况下,可以XHR许多种类的非原始资源:
设置了适当的CORS标头
ServiceWorkers通过允许缓存从源服务器获取和缓存来实现这一点
项目。然而,也有一些限制。首先,与同源资源不同
它们在缓存中作为响应对象管理,并设置了type属性
对于“基本”,存储的对象是设置了type属性的响应对象
“不透明”。“不透明”类型的响应提供的API远不如
答复类型为“基本”;不能读取或设置正文和标题,也不能设置多个正文和标题
检查其内容的其他方面。它们可以传递给
event.respondWith(r)方法,其方式与键入“basic”的响应相同,
但不能以编程方式有意义地创建。这些限制是
必须保留平台的安全不变量。允许缓存
存储它们允许应用程序在大多数情况下避免重新设计
我将CORS标题设置为:
Access-Control-Allow-Origin:https://xxx.xx.x.com
Access-Control-Allow-Credentials:true
但我仍然得到一个“不透明”的响应,我不能确保代码是200。
如果缓存这些不成功的响应,将导致一些问题
例如,一个网络密友对跨域资源造成404攻击,
我缓存它,然后我将始终使用404缓存响应,即使在
网络问题已得到纠正。同一来源的资源没有此问题。不幸的是,无法检测它
出于安全原因,这是明确不允许的:.请求的
模式
(据称)。(我之所以说“据称”,是因为我相信我见过这样的情况:在fetch()
中使用隐式创建的请求
会导致启用CORS的响应
)
因此,如果您知道您的服务器支持CORS,您应该明确选择CORS:
var corsRequest = new Request(url, {mode: 'cors'});
fetch(corsRequest).then(response => ...); // response won't be opaque.
给定正确配置的远程服务器,启用CORS的
请求
将产生具有。与“不透明的”
响应不同,“cors”
响应
将暴露底层的状态
,主体
,等等。非常感谢!!!这对我来说真的很有效。mua ~~这里的问题是,您最初是如何通过服务工作者隧道发送请求的。如果那些使用“无cors”,那就是你得到的<代码>新请求(“x”)。模式
返回“cors”。