首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >什么是不透明的反应,它有什么用途?

什么是不透明的反应,它有什么用途?
EN

Stack Overflow用户
提问于 2016-03-29 10:41:21
回答 4查看 142.6K关注 0票数 214

我试图fetch一个旧网站的网址,结果发生了一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.

我理解了消息,并尝试执行一个返回不透明响应的请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fetch("http://xyz", {'mode': 'no-cors'})

好了,现在起作用了..。但我看不懂。=\

那么,一个不透明的反应的目的是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-30 00:26:33

考虑服务工作者充当不可知论缓存的情况。您唯一的目标是提供与网络相同的资源,但速度更快。当然,您不能确保所有的资源都是您的来源的一部分(例如,考虑从CDN提供的库)。由于服务工作者具有更改网络响应的潜力,因此您需要确保您对响应的内容、对其头,甚至对结果都不感兴趣。您只对响应感兴趣,因为它是一个黑匣子,可以缓存它并更快地服务它。

这就是{ mode: 'no-cors' }的目的。

票数 173
EN

Stack Overflow用户

发布于 2016-03-29 12:08:59

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

票数 79
EN

Stack Overflow用户

发布于 2017-11-30 14:07:36

Node应用程序也有解决方案。CORS Anywhere是一个NodeJS代理,它将CORS头添加到代理请求中。

代理的url实际上是从路径中获取的,经过验证和代理。代理URI的协议部分是可选的,默认为"http“。如果指定了端口443,则协议默认为"https“。

除了cookie之外,此包不对http方法或标头设置任何限制。不允许请求用户凭据。该应用程序可以配置为需要一个头来代理请求,例如,为了避免浏览器的直接访问。https://robwu.nl/cors-anywhere.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36292537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文