【发布时间】:2018-07-19 21:49:10
【问题描述】:
我有一个 Ionic 应用程序与之通信的后端服务器(Spring Boot,由 nginx 代理)。对于每个请求,它都会发送以下标头:access-control-request-headers: *、access-control-allow-headers: *、access-control-allow-origin: *、access-control-allow-methods: GET, POST, PUT, HEAD, OPTIONS, DELETE, PATCH。没有例外。
它还允许OPTIONS 请求并为每个请求返回 HTTP 200。
现在,我有一个使用 @angular/common/http 的离子应用程序。在浏览器中,一切正常,我可以优雅地发出GET 和POST 请求。
但在模拟器中(当我使用ionic cordova emulate ios 运行时,我只能发出GET 请求,POSTs 失败并显示以下内容:
{"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":null,"ok":false,"name":"HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown Error","error":{"isTrusted":true}}
如您所见,上面写着status: 0。这是指CORS 问题,但我不知道如何进一步调试。
我的请求都通过 Postman 成功,甚至使用 curl。只有在模拟器中才会失败。
【问题讨论】:
-
@HikmatGurbanli 不是。你甚至敢于阅读和比较这些问题吗?我无法使用代理,因为我正准备部署我的应用程序。而且所提到问题中的每一步都已经失败了。
-
这是一个老歌,但很好:blog.ionicframework.com/handling-cors-issues-in-ionic。这表明在设备上运行时没有来源,因此 CORS 不应该发挥作用。你能确认在模拟器中运行时没有 OPTIONS 请求吗?你试过物理设备吗?
-
@BRass 谢谢,我很清楚那个页面。正如我所说,我不能使用代理,如博客所述。我要部署。我可以提出
GET请求,问题仅在于POSTS。您提供的链接指的是一般问题,我已经采取了所有提到的步骤。不过,只有GETs 有效。再次感谢。 -
除了文本的长度似乎相同,浏览器上没有服务器问题,但模拟器上没有。你还没有提到你是否尝试过
标签: javascript typescript ionic-framework cors ionic3