2014-01-23 64 views
37

phonegap应用程序是否需要任何CORS更改(如设置Access-Control-Allow-Origin:*)才能正常工作?我在Heroku上托管了一个安静的API,并且想知道我是否需要设置该头以便我的phonegap应用程序调用该服务?CORS和phonegap应用程序

我在想,因为phonegap应用程序并不是真的托管在一个域上,那么CORS不是必需的,我不会得到任何跨域问题?

如果有人能向我解释为什么这是或不是这种情况,那将是非常好的。

回答

24

PhoneGap你可以将XHR直接连接到远程服务器,它应该“只是工作”。跨域策略不适用于PhoneGap (出于各种原因,基本上是因为您的应用本质上是 运行在设备上的file:// URI)。

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

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

+3

请记住,此白名单不适用于通过inAppBrowser-Plugin完成的工作。白名单只能在Cordova主浏览器中使用! – Tobias

+1

我想知道为什么[这个答案](http://stackoverflow.com/a/3744697/399414)说'通过文件运行的脚本://对CORS的支持有限',如果远程服务器的XHR应该“正常工作”。 –

2

是的,你必须激活承载您的API他的服务器上CORS。 我在iOs上运行Phonegap App。我的应用程序从Apache上的服务器API请求json。 我激活服务器上的CORS来获取数据,否则我在我的应用程序中没有任何东西,没有错误,也没有数据。

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

+0

这是一个答案?或问题?..你需要清理你的答案,以便它对所提供的问题作出回应。您的答案被标记,因为它不清楚 – CodeGodie

4

无默认科尔多瓦(PhoneGap的)平台需要CORS,尽管HTML文件在本地托管(file://)并且正在访问Web域的事实。

但是,在iOS上,如果您通过cordova-plugin-wkwebview-engineUIWebView切换到较新的WKWebView,那么您确实必须实施CORS。

+0

如果我正在使用WKWebview,如何实现CORS? – yuriploc

+0

@yuriploc,看看这个帖子的更多细节。使用这种方法为我工作得到WKWebView工作:https://stackoverflow.com/a/38241609/2129418 –

+0

请注意,“浏览器”平台* * *需要CORS。不知道是否有其他人做。 – Jules

相关问题