Ionic Browser Application

时间:2018-05-24 17:15:12

标签: rest http ionic-framework grails cors

我使用rest-api配置文件在Grails中实现了REST API。在方法findProfile中,我返回Ionic所需的CORS头来传递CORS检查。我已将应用程序部署到Apache2,而REST API的URL不通过Ionic Proxy。昨天,我的API服务没有返回CORS标题,这使得事情失败了。我更正了问题,如果我使用离子服务器测试应用程序并更改URL以通过代理,它就可以工作。但是当我尝试在Apache2部署的应用程序上访问相同的功能时,我没有得到CORS标头,就像缓存的东西一样。很奇怪。知道为什么会这样吗?

更多细节: 离子应用程序和REST API部署在同一主机上。

据我所知,如果通过离子服务或离子运行在本地测试应用程序,CORS只是一个问题。我也理解代理只适用于上述情况。

我从同一个REST API调用其他函数,这些函数没有问题。

请让我知道您需要我分享哪些更多信息,以帮助您了解问题并获得答案。

1 个答案:

答案 0 :(得分:0)

我找到了问题的根源。

对于所有具有application / json以外的内容类型的请求,没有发出CORS的飞行前请求,因此没有失败,因为服务器很乐意接受请求。

另一方面,当提交具有内容类型application / json的请求时,在原始POST请求之前将具有方法OPTIONS的飞行前CORS请求发送到服务器。由于我的Grails REST API应用程序未启用CORS,因此飞行前请求失败。通过代理时没有失败,因为在通过代理时不会生成飞行前请求。这就是为什么,在本地测试时,它工作正常。

以防万一你想知道如何在Grails 3.2.11中启用CORS支持。方法如下:

在application.yml文件中,在最顶层(不确定是否重要,可能不是,但我在顶部添加了它)添加以下内容:

正下方的grails:标签(见下文)

Grails的:     CORS:         enabled:true

这使它大开,但你可以根据需要加紧。有关更多信息,请参阅此链接:

http://docs.grails.org/3.2.11/guide/single.html#whatsNewCors

重建我自成一体的WAR,部署它并瞧。像魅力一样。

希望这有助于人们遇到同样的问题。