phonegap应用程序是否需要进行任何CORS更改(例如设置Access-Control-Allow-Origin:*)?我在Heroku上托管了一个非常好的API,并且想知道我是否需要设置此标头以便我的phonegap应用程序调用该服务?
我在想,因为phonegap应用程序并非真正托管在域上,因此不需要CORS,我不会遇到任何跨域问题?
如果有人可以向我解释为什么会出现这种情况,那将会很棒。
答案 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-engine从file://
切换到较新的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="*" />