预检响应在角度 4 中具有无效的 HTTP 状态代码 500

Posted

技术标签:

【中文标题】预检响应在角度 4 中具有无效的 HTTP 状态代码 500【英文标题】:Response for preflight has invalid HTTP status code 500 in angular 4 【发布时间】:2018-03-04 05:48:28 【问题描述】:

我正在尝试从我的 Angular 4 Web 应用程序中使用用 c# 编写的服务。当我向服务发出 POST 请求时,我在 chrome 中收到“预检响应具有无效的 HTTP 状态代码 500”,而在服务器中,POST 请求正文值为空。但是当我通过 POSTMAN 发出相同的请求时,我得到了正确的响应。

谢谢!!

【问题讨论】:

你能显示一些代码吗? 也许您可以向我们展示您的 http.post 角度?如果我们可以看到您发送到控制器的数据的控制台日志,以及您的 c# 控制器操作,这也会很有帮助 您是否在本地以开发模式运行它并且您是否使用 angular-cli?如果是这样,您可以使用代理绕过 chrome 阻止您进行网络调用的 cors。如果您需要,我可以发布如何执行此操作的答案。 【参考方案1】:

这主要与 CORS 政策有关。服务器在预检 OPTIONS 请求期间阻止了该请求。因此,请在您的服务器上启用 CORS。

这就是 POSTMAN 工作的原因:

常规网页可以使用 XMLHttpRequest 对象发送和 从远程服务器接收数据,但它们受到相同的限制 原产地政策。扩展并没有那么有限。分机可以交谈 其来源之外的远程服务器,只要它首先请求 跨域权限。

所以基本上 POSTMAN 是一个扩展,并不关心 CORS

【讨论】:

以上是关于预检响应在角度 4 中具有无效的 HTTP 状态代码 500的主要内容,如果未能解决你的问题,请参考以下文章

预检响应具有无效的 HTTP 状态代码:401 角度

预检响应具有无效的 HTTP 状态代码 404”

预检响应具有无效的 HTTP 状态代码 400 - aspx

XMLHttpRequest 无法加载。预检响应具有无效的 HTTP 状态代码 405

axios 和 reactjs:预检响应具有无效的 HTTP 状态代码 400

Angular 5:预检响应具有无效的 HTTP 状态代码 403