302 重定向后的 AJAX 调用将源设置为 null
Posted
技术标签:
【中文标题】302 重定向后的 AJAX 调用将源设置为 null【英文标题】:AJAX call following 302 redirect sets origin to null 【发布时间】:2015-07-23 12:04:08 【问题描述】:我正在从域 A 到域 B 进行 AJAX 调用。
我的域 B 检查 A 是否在允许的域列表中,并将 Access-Control-allow-Origin
设置为域 A。到目前为止,一切顺利。
域 B 通过使用 Location
标头向域 C 发送 302 重定向来响应请求。
AJAX 调用遵循重定向到域 C,但具有标头:Origin: null
。
我希望 origin
标头在重定向之后设置为域 A。
谁能向我解释为什么源设置为null
而不是域A?
示例
从域 A 到 B 的请求
GET / HTTP/1.1
Host: domain-B.com
Origin: http://domain-A.com
来自域 B 的响应:
Access-Control-Allow-Origin: http://domain-A.com
Location: http://domain-C.com
AJAX 调用遵循重定向到域 C:
GET HTTP/ 1.1
Host: domain-C.com
Origin: null
【问题讨论】:
您好,我有一个问题...您是如何解决问题的?这对所有人来说都非常有趣...您是否应用了更改侧域 A 或侧域 B?谢谢! Are there any browsers that set the origin header to "null" for privacy-sensitive contexts?的可能重复 【参考方案1】:看这里,这似乎表明它与“隐私敏感”上下文有关。
Are there any browsers that set the origin header to "null" for privacy-sensitive contexts?
【讨论】:
【参考方案2】:我在域 A 上设置了 Access-Control-Allow-Origin: null 并且有效。
【讨论】:
哇。这违背了 CORS 的目的,并且非常不安全。请不要这样做。 如果你无条件地这样做,那么它们都很糟糕。如果要支持 null 来源,则需要专门返回 null,如果要支持任何来源,但不支持 null 来源,则通配符将起作用。最好先检查来源/引荐来源。以上是关于302 重定向后的 AJAX 调用将源设置为 null的主要内容,如果未能解决你的问题,请参考以下文章
JQuery Ajax 在不设置 cookie 的情况下自动重定向?
服务器返回重定向 (302) 后,iOS 设备上的 AJAX 或 XHR 请求失败,代码为 0