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 重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章