什么是不透明的请求,它的用途是什么?

我试图fetch旧网站的url,并发生错误:

 Fetch API cannot load http://xyz. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://abc' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. 

我理解了这个信息,试图做一个不透明的请求:

 fetch("http://xyz", {'mode': 'no-cors'}) 

好吧,现在可以工作…但是我看不懂。 = \

那么,这个不透明的请求的目的是什么呢?

考虑服务工作者作为不可知的caching的情况。 你唯一的目标是提供你从networking获得的相同资源,但速度更快。 当然,你不能确保所有的资源将成为你的起源的一部分(例如考虑从CDN服务的图书馆)。 由于服务人员有可能改变networking响应,因此您需要保证您对响应内容,标题甚至结果都不感兴趣。 你只对响应作为一个黑盒子,可能caching它,并提供更快的服务。

这就是为什么{ mode: 'no-cors' }原因。

JavaScript不能访问不透明的响应,但仍可以使用Cache APIcaching它们,并在服务工作人员的fetch事件处理程序中使用它们进行响应。 因此,它们对于使应用程序脱机很有用,也适用于无法控制的资源(例如,不设置CORS标题的CDN上的资源)。