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

无法在 ajax 中处理 302 重定向,为啥? [复制]

Shiro logout 302重定向,shiro 302解决方案

JAVA如何获得服务器端重定向后的URL?

ajax与重定向