CORS重定向工作异常

CORS redirect works unexpectedly

本文关键字:异常 工作 重定向 CORS      更新时间:2023-09-26

根据CORS规范(7.1.7 -重定向步骤(针对简单跨域请求)):

  • 如果请求URL来源与原始URL来源不相同,则将源来源设置为全局唯一标识符(传输时变为null)。
  • 我有一个场景,其中javascript从a.b laah.com使CORS请求(即起源请求头存在)通过发送浏览器b.b laah.com,它响应302和位置= c.b laah.com。如果我正确阅读规范,这应该导致对c.blah.com的请求包含Origin header = "null"。相反,原点标头不存在,因此对c.blah.com的请求不被视为CORS请求。

    在Chrome 54中出现上述行为。我还没有确认其他浏览器中的确切请求内容,但我已经检查了我的特定应用程序流在Chrome 54, Firefox 37和IE 11浏览器中工作,这意味着他们永远不会看到Origin标头设置为"null"(如果收到Origin ="null",我的服务将大声失败请求)。

    这一切都让我担心,因为当我的应用程序工作时,它实际上不应该工作,我不想忽略这个事实。我是否误解了说明书?对于spec行为,是否有任何我遗漏的警告?

    所有流量都是HTTPS,在CORS响应头中不返回*(通配符),适当设置带有凭据标志/头,没有使用代理,所有参与者在单独的机器上,所以不应该是本地主机gotcha…

    谢谢。

    在我的原始配置中,对b.blah.com的请求是由js(而不是xhr)发布的表单。经过一番挖掘,似乎由于请求是由js触发的,这保证了对b.b laah.com的请求上有一个Origin头,但最终重定向到c.b laah.com是由浏览器处理的,没有任何脚本/xhr干预,所以重定向没有使用Origin头装饰。

    我设置了一个测试,其中对b.b laah.com的请求是xhr,这确实导致了对c.b laah.com的重定向上的Origin = "null"。

    我想我需要更好地研究一下何时执行同源策略的细微差别。

    谢谢。