CORS XHR 重定向不起作用

Posted

技术标签:

【中文标题】CORS XHR 重定向不起作用【英文标题】:CORS XHR redirect not working 【发布时间】:2014-03-08 21:01:08 【问题描述】:

我正在发出一个 CORS 请求,该请求返回一个带有位置标头的 202 空响应来查询数据。

但是浏览器没有重定向到位置标头中的 url。在 Chrome/Firefox 上尝试过,它也是一样的。

 jQuery.ajax(url, options).done((result: any) =>                         
                    );

.done 在 202 响应后立即被调用

【问题讨论】:

【参考方案1】:

看看 HTTP 规范,尤其是this part:

14.30 地点

Location 响应头字段用于重定向 收件人到 Request-URI 以外的位置以完成 新资源的请求或标识。对于 201 (已创建)响应,位置是新资源的位置 由请求创建。 对于 3xx 响应,位置应该 指明服务器的首选 URI自动重定向到 资源。字段值由单个绝对 URI 组成。

由于仅针对 3xx 响应(实际上我已经检查了整个规范)提到了自动重定向,因此这意味着对于任何其他状态代码,它都取决于浏览器。 Wikipedia 也证实了这一点:

提供有关新创建资源位置的信息。 在这种情况下,应使用 HTTP 发送 Location 标头 状态码为 201 或 202

我认为可以安全地假设这就是浏览器的工作方式。您必须手动重定向。

【讨论】:

很高兴知道这一点。不幸的是,浏览器不允许我阅读标题。我设置了 Access-Control-Expose-Headers:* 。从 CORS 规范中我非常确定这里是否允许通配符。 @user460025 我认为Access-Control-Expose-Headers 应该是一个逗号分隔的标题列表,它不允许*。试试吧。如果这没有帮助,我不知道如何帮助你,对不起。

以上是关于CORS XHR 重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个重定向不起作用?

为啥页面重定向在 php 中不起作用

为啥这个 .htaccess 重定向不起作用?

403重定向不起作用

PHP重定向不起作用

CodeIgniter 4 重定向功能不起作用