什么是预期,当它接收到一个做一个HTTP服务器“来源:空”头? (CORS)

问题描述 投票:1回答:1

Origin头的定义说:

origin-or-null  = origin / %s"null" ; case-sensitive

为“null”像一个域名进行管理?换句话说,可以在服务器接受请求时,“空”使用(在某些情况下,至少),或者认为它像一个故障所有的时间?

我看着在Fetch Documentation的解释,但到目前为止,我还没有找到一个答案,这个具体的问题。

http cors cross-domain
1个回答
1
投票

通过发送Origin: null报头,浏览器,指示该请求是从opaque origin。也就是说,浏览器作为该请求没有在一个典型的方式,从一个应用程序实际上是网络上运行,并使用一个Ajax方法或取或XHR调用你的服务器发起一个服务器维护者信号给你 - 所以它可能不是一个用例,你真正想要的服务支持。

所以你一般不想回应Access-Control-Allow-Origin请求时发送的Origin: null响应头。换句话说,您希望浏览器阻止你发回这样的请求从接入响应的JavaScript代码的任何前端。

而当浏览器设置Originnull最常见的情况是可能的时候前端代码正在从某人的本地文件系统(从Web服务器从file:// URL,而非)上运行 - 也有一些其他的情况下,浏览器也设置Originnull。对于一个详尽的列表,请参阅https://stackoverflow.com/a/42242802/441757

https://w3c.github.io/webappsec-cors-for-developers/#avoid-returning-access-control-allow-origin-null有你应该如何看待这种情况的解释:

它可能看起来安全返回Access-Control-Allow-Origin: "null",但是任何资源的来源及使用非分层方案序列化(如data:file:)和沙箱文件被定义为“空”。许多用户代理会允许这样的文件访问与Access-Control-Allow-Origin: "null"头的响应,并且任何来源可以用一个“空”原产地创建一个敌对的文档。因此,应避免对ACAO报头中的“空”值。

换句话说,你可能会觉得这是发回Access-Control-Allow-OriginOrigin: null请求有用的,如果您有意让您的服务器响应在JavaScript上某人的本地文件系统中运行的代码前端被消耗(例如,某人做本地测试) 。但是,这样做,你会不会让刚刚与本地文件系统的情况下,而且在https://stackoverflow.com/a/42242802/441757描述的所有其他情况。这是全有或全无。

© www.soinside.com 2019 - 2024. All rights reserved.