当前位置: 首页 > 知识库问答 >
问题:

如何解决“预飞行无效(重定向)”或“预飞行请求不允许重定向”

袁文景
2023-03-14

我已经按照这个步骤来设置我的服务器以启用CORS。https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enable-cross-origin-requests-in-web-api

但是现在在我的浏览器开发控制台中,我看到这个错误消息:

你知道我该怎么做才能修好它吗?我在HTTPS中提出一个CORS请求。我认为这是导致“预飞行无效(重定向)”失败的原因。但是我不知道为什么或者是什么在重定向选项请求。

谢谢你。

共有1个答案

太叔航
2023-03-14

遗漏拖尾斜杠问题是问题中引用的错误的最常见原因。

当您看到此错误时,这意味着您的代码正在触发浏览器发送CORS preflightOptions请求,服务器将响应3xx重定向。为了避免错误,您的请求需要获得2xx成功响应。

您可以调整代码以避免触发浏览器发送options请求。

    null

如果您不能更改html" target="_blank">代码以避免浏览器进行预执行,另一个选择是:

  1. 检查对选项请求的响应中位置响应标头中的URL。
  2. 更改代码,直接向另一个URL发出请求。

URL之间的区别可能只是路径中的尾随斜杠--例如,您可能需要更改代码中的URL以添加尾随斜杠-- 例如http://localhost/api/auth/login/(注意尾随斜杠)而不是http://localhost/api/auth/login(没有尾随斜杠)--或者您可能需要删除尾随斜杠。

可以使用浏览器devtools中的网络窗格检查对选项请求的响应,并在位置响应标头的值中查找重定向URL。

 类似资料:
  • 场景: XMLHttpRequest无法加载https://webapi.azurewebsites.net/api/items。请求被重定向到“https://login.windows.net/{authority-guid}/oauth2/authorize?response_type=id_token&redirect_uri=...等...”,这对于需要预先处理的跨源请求是不允许的。 标

  • 我正在尝试使用jQuery.ajax()创建一个跨源GET请求。我的服务器已配置为接受此类请求。Chrome不允许我发送标题: 访问控制请求方法 访问控制请求头 拒绝设置不安全的标头“访问控制请求方法” 这是我的ajax请求: 我期望这些标题会导致浏览器创建一个飞行前请求(OPTIONS)来与服务器协商。我知道我以前已经完成了。有人能告诉我我忘记了什么吗? 谢谢!

  • 我在前端使用Angular 6,在后端使用Java Spring Boot。 我想让我的登录页面向服务器发出请求。服务器重定向到仪表板页。 我有http://localhost:4200/login angular页面,它向服务器http://localhost:8080/login发出POST请求

  • 用于laravel和前端的CORS插件我使用Axios调用REST api 我得到了这个错误,从来源“http://localhost:8080”访问“https://xx.xxxx.xx”处的XMLHttpRequest已被CORS策略阻止:对预飞行请求的响应未通过访问控制检查:预飞行请求不允许重定向。 错误只发生一条路由,其余的都在工作。也在做邮递员

  • 我正在尝试使用重定向规则设置静态web托管。在我的应用程序中,任何具有前缀api/(http://web.company.com/api)的请求都应该重定向到具有相同前缀(http://api.company.com/api)的另一个主机。我已按以下方式设置路由规则: 但请求没有被正确重定向。控制台中有两个不同的错误: XMLHttpRequest无法加载http://api.company.co

  • 问题内容: 我开发了一个PhoneGap应用程序,现在将其转换为移动网站。除了一处小故障,一切都可以顺利进行。我通过POST请求使用了某个第三方API,该API在该应用中可以正常运行,但在移动网站版本中却无法运行。 仔细查看后,似乎AngularJS(我想实际上是浏览器)正在首先发送OPTIONS请求。今天,我对CORS有了很多了解,但似乎无法弄清楚如何完全禁用它。我没有访问该API的权限(因此无