当HTTP服务器接收到一个;来源:空";头球?(CORS)

当HTTP服务器接收到一个;来源:空";头球?(CORS),http,cors,cross-domain,Http,Cors,Cross Domain,Origin标题的定义是: origin-or-null = origin / %s"null" ; case-sensitive “null”是否要像域名一样管理?换句话说,当使用“null”(至少在某些情况下)时,服务器是否可以接受请求,或者它是否一直被认为是一个错误 我在中查找了一个解释,但到目前为止,我还没有找到这个特定问题的答案。通过发送Origin:null标题,浏览器表明请求来自一个用户。也就是说,作为服务器维护者,浏览器正在向您发出信号,表明请求不是以典型方式从实际在web上

Origin
标题的定义是:

origin-or-null  = origin / %s"null" ; case-sensitive
“null”是否要像域名一样管理?换句话说,当使用“null”(至少在某些情况下)时,服务器是否可以接受请求,或者它是否一直被认为是一个错误


我在中查找了一个解释,但到目前为止,我还没有找到这个特定问题的答案。

通过发送
Origin:null
标题,浏览器表明请求来自一个用户。也就是说,作为服务器维护者,浏览器正在向您发出信号,表明请求不是以典型方式从实际在web上运行的应用程序启动的,该应用程序使用Ajax方法或Fetch或XHR调用您的服务器-因此,您可能不打算实际支持您的服务

因此,在响应
Origin:null
请求时,通常不希望发送
Access Control Allow Origin
响应头。换句话说,您希望浏览器阻止任何前端JavaScript代码访问您为此类请求发回的响应

当浏览器将
源文件
头文件设置为
null
时,最常见的情况可能是前端代码从某人的本地文件系统(从
文件://
URL,而不是从Web服务器)运行时-在许多其他情况下,浏览器也会将
Origin
标题设置为
null
。有关详细列表,请参阅

解释了您应该如何看待此类案例:

返回
访问控制允许源代码:“null”
似乎是安全的,但是使用非层次结构方案(例如
数据:
文件:
)和沙盒文档的任何资源的源代码的序列化被定义为“null”。许多用户代理将授予此类文档对带有
访问控制允许来源:“null”
标题的响应的访问权限,任何来源都可以创建带有“null”来源的恶意文档。因此,应避免ACAO标头的“null”值

换句话说,如果您有意允许来自服务器的响应在某个人的本地文件系统上运行的前端JavaScript代码中使用(例如,对于进行本地测试的人),您可能认为将
Access Control Allow Origin
for
Origin:null
请求发回
。但是通过这样做,您不仅可以使用本地文件系统,还可以使用中描述的所有其他情况。要么全力以赴,要么一事无成