角度 4 - 预检响应无效(重定向)

Posted

技术标签:

【中文标题】角度 4 - 预检响应无效(重定向)【英文标题】:angular 4 - Response for preflight is invalid (redirect) 【发布时间】:2017-11-15 01:06:48 【问题描述】:

我在本地有 angular 4 项目,我想使用 api 获取信息,我收到此错误

localhost/:1 XMLHttpRequest cannot load http:????. Response for preflight is invalid (redirect)

我在本地有一个 jquery 项目,它调用相同的 api 并且没有错误地得到答案

什么是问题?我在这个网站上看到很多问题和答案,没有人可以帮助我。

【问题讨论】:

这是一个 CORS 问题。服务器没有以预期的标头响应预检请求,因此浏览器拒绝发出实际请求。您的 jquery 项目是否从与您发出请求的 URL 和端口相同的 URL 和端口加载,而 Angular 项目是否从不同的 URL 或端口加载? 我在 localhost 和相同的 url 中运行它们,但没有任何变化 【参考方案1】:

Gunter 提到的CORS 就是这种情况。如果您请求的资源与您请求的域位于不同的域(如在您的情况下,即 api 的域),那么您会收到此类错误。

在执行某些类型的跨域 Ajax 请求时,支持 CORS 的现代浏览器会插入一个额外的“预检”请求,以确定它们是否有权执行该操作。

请参考此链接:Cross-origin resource sharing

【讨论】:

我必须做什么? 您可以在您的 api 端设置preflight 响应。你也可以参考这个***.com/questions/35841786/…。 在 angular 4 中,我使用 $.ajax 而不是用户 angular http,错误消失了!!! 现在您正在混合使用 jquery 和不推荐的 Angular 做事方式。正确的 Angular 项目不应该依赖 jquery

以上是关于角度 4 - 预检响应无效(重定向)的主要内容,如果未能解决你的问题,请参考以下文章

cors - 预检响应无效(重定向) - redux

对于 aws s3,预检响应无效(重定向)

Angular 2无法加载预检响应无效(重定向)[重复]

某些 GET 请求对预检的 Angular2 响应无效(重定向)

AngularJs - 服务器抛出异常''XMLHttpRequest 无法加载预检的“URL”响应无效(重定向)'

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