Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 离子浏览器应用中的CORS头问题_Rest_Http_Ionic Framework_Grails_Cors - Fatal编程技术网

Rest 离子浏览器应用中的CORS头问题

Rest 离子浏览器应用中的CORS头问题,rest,http,ionic-framework,grails,cors,Rest,Http,Ionic Framework,Grails,Cors,我有一个使用RESTAPI配置文件在Grails中实现的RESTAPI。在findProfile方法中,我返回Ionic通过CORS检查所需的CORS头。我已经将应用程序部署到Apache2,RESTAPI的URL没有通过Ionic代理。昨天,我的API服务没有返回CORS头,这导致了失败。我纠正了这个问题,如果我使用ionic serve测试应用程序并更改URL以通过代理,它就会工作。但是,当我尝试在Apache2部署的应用程序上访问相同的函数时,我并没有得到CORS头,就像缓存了一样。很奇怪

我有一个使用RESTAPI配置文件在Grails中实现的RESTAPI。在findProfile方法中,我返回Ionic通过CORS检查所需的CORS头。我已经将应用程序部署到Apache2,RESTAPI的URL没有通过Ionic代理。昨天,我的API服务没有返回CORS头,这导致了失败。我纠正了这个问题,如果我使用ionic serve测试应用程序并更改URL以通过代理,它就会工作。但是,当我尝试在Apache2部署的应用程序上访问相同的函数时,我并没有得到CORS头,就像缓存了一样。很奇怪。知道为什么会这样吗

还有一些细节: ionic应用程序和REST API部署在同一台主机上

我理解,只有通过ionic serve或ionic run在本地测试应用程序时,CORS才是一个问题。我还了解代理仅适用于上述情况

我正在从相同的RESTAPI调用其他函数,这些函数没有问题


请告诉我您还需要我分享哪些信息来帮助您理解问题并获得答案。

我找到了问题的根源

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

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

以防您想知道如何在Grails3.2.11中启用CORS支持。以下是如何:

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

在grails:tag的正下方(见下文)

圣杯: cors: 已启用:true

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

重建了我的独立战争,部署了它,瞧。工作起来很有魅力

希望这能帮助那些和我有同样问题的人