CORS和phonegap应用程序

时间:2014-01-23 00:44:15

标签: cordova cross-domain cors

phonegap应用程序是否需要进行任何CORS更改(例如设置Access-Control-Allow-Origin:*)?我在Heroku上托管了一个非常好的API,并且想知道我是否需要设置此标头以便我的phonegap应用程序调用该服务?

我在想,因为phonegap应用程序并非真正托管在域上,因此不需要CORS,我不会遇到任何跨域问题?

如果有人可以向我解释为什么会出现这种情况,那将会很棒。

4 个答案:

答案 0 :(得分:27)

PhoneGap你可以直接将XHR连接到远程服务器吧 应该“正常工作”。跨域策略不适用于PhoneGap (出于各种原因,主要是因为你的应用基本上是 运行文件:// URI on-device)。

请注意,您必须为自己的应用设置白名单 访问这些外部域。请检查此链接:

http://docs.phonegap.com/en/1.8.0rc1/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide

答案 1 :(得分:5)

默认的Cordova(PhoneGap)平台都不需要CORS,尽管HTML文件是在本地托管(a.equals(b))并且正在访问Web域。

但是,在iOS上,如果您通过cordova-plugin-wkwebview-enginefile://切换到较新的UIWebView,则确实必须实施CORS。

答案 2 :(得分:2)

是您必须在托管API的服务器上激活CORS。 我在iOs上运行Phonegap应用程序。我的应用程序从Apache上的服务器API请求json。 我在服务器上激活CORS以获取数据,否则我的应用程序中没有任何内容,没有错误,也没有数据。

请注意,配置文件中的access参数允许您过滤应用程序有权查询的域,但不对服务器的权限执行任何操作。

答案 3 :(得分:2)

从cordova 5开始,您需要添加白名单插件

https://github.com/apache/cordova-plugin-whitelist

在config.xml中添加

<!-- Don't block any requests -->
<access origin="*" />