gpt4 book ai didi

google-chrome - 由于 Chrome 中缺少预检请求而阻止 HTTP 重定向

转载 作者:太空狗 更新时间:2023-10-29 18:13:36 25 4
gpt4 key购买 nike

我们目前正在构建一个由 RESTful API 支持的 Angular 应用程序。该应用程序尝试使用以下请求 URL 获取用户信息:http://example.com:1337/api/users/1。此资源以 HTTP 301(永久移动)响应并设置资源已移动到的位置 header ,例如Location=http://another-hostname.com:8088/new/users/1。Angular 的 HTTP 客户端或浏览器会自动处理此响应并重定向到此新位置。

遗憾的是,在 Chrome 中我们收到以下错误消息:

XMLHttpRequest cannot load http://example.com:1337/api/users/1. Redirect from 'http://example.com:1337/api/users/1' to 'http://another-hostname.com:8088/new/users/1' has been blocked by CORS policy: Request requires preflight, which is disallowed to follow cross-origin redirect.

Chrome 在对新资源调用 GET 之前跳过预检请求 (CORS)。我们用 Firefox 对此进行了测试,它运行良好。 Firefox 发出新的预检请求,之后的 GET 请求将被成功处理。

所以,我想知道这里的正确行为是什么。有没有人对 30 倍响应有过类似的体验?

是否有可能禁用自动浏览器(或 Angular HTTP 客户端)重定向处理?这样我们就可以使用全新的 this.http.get(...) 手动处理新的 GET。

谢谢你的建议,

迈克尔

最佳答案

Chrome skips a preflight request (CORS) before calling the GET to the new resource. We tested this with Firefox and there it is working quite well. Firefox issues a new preflight request and the GET request afterwards will be handled successfully.

您可以在此处找到有关该问题的讨论以及其他解决方法,以及指向 CORS 的 W3C 建议的相应部分的链接:https://stackoverflow.com/a/39728229/4282127 .

自版本 57 起,Chrome 应该支持重定向 (3xx) 处的预检请求。因此,更新到最新的 Chrome 版本应该至少可以解决缺少预检请求的问题。

关于google-chrome - 由于 Chrome 中缺少预检请求而阻止 HTTP 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43136402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com