Rest 离子浏览器应用中的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调用其他函数,这些函数没有问题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头,就像缓存了一样。很奇怪
请告诉我您还需要我分享哪些信息来帮助您理解问题并获得答案。我找到了问题的根源 对于内容类型不是application/json的所有请求,没有发出CORS的飞行前请求,因此没有失败,因为服务器很乐意接受该请求 另一方面,当提交内容类型为application/json的请求时,会在原始POST请求之前向服务器发送带有方法选项的飞行前CORS请求。由于我的Grails REST API应用程序未启用CORS,因此飞行前请求失败。通过代理时没有失败,因为通过代理时不会生成飞行前请求。这就是为什么在本地测试时,它工作得很好 以防您想知道如何在Grails3.2.11中启用CORS支持。以下是如何: 在application.yml文件的最顶部(不确定这是否重要,可能不重要,但我在顶部添加了它)添加以下内容: 在grails:tag的正下方(见下文) 圣杯: cors: 已启用:true 这使它大开,但你可以根据需要把它收紧。有关更多信息,请参阅此链接: 重建了我的独立战争,部署了它,瞧。工作起来很有魅力 希望这能帮助那些和我有同样问题的人