2013-10-24 31 views
2

我刚开始使用Apache Cordova。我有一个库(通过ajax)调用肥皂服务器。Apache Cordova(Phonegap):跨站点脚本需要jsonp吗?

当我在我的本地计算机上运行这些浏览器时,在尝试拨打服务电话时出现跨站点脚本错误。

当我在iOS模拟器中使用Cordova浏览器运行相同的确切代码时,脚本似乎击中了服务器,并且正确接收了响应数据。

所以我的问题是Cordova浏览器如何在没有跨站点脚本权限的情况下发出这些请求& JSONP?我注意到的一件事是,当请求从iOS发送时,没有“Origin”头。这是否允许科尔多瓦浏览器偷偷地规避跨站点脚本要求?设备上的node.js服务器(我相信这是Cordova的工作原理)是否可能操纵标题来允许这样做?

我想避免在我的网站上启用跨站点脚本,所以我认为这个“功能”很好,但我想知道它是否也是一个安全漏洞。

任何人都有这方面的经验?

回答

10

默认情况下,Phonegap允许跨域请求。如果您担心安全问题,可以使用domain whitelisting来限制这一点。如果您使用jQuery,请设置$.support.cors = true;以允许跨域请求。

This page在Phonegap中具有跨站点脚本安全性的细分。

顺便说一句,您可以使用谷歌浏览器的一个巧妙的技巧来允许跨站点脚本编写,因此可以在Ripple模拟器中测试您的Phonegap应用程序,例如:在Chrome的快捷方式中设置命令行参数--disable-web-security

"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security 
+0

感谢您的解释。 chrome技巧也很有用(在Chrome中测试更容易)。你摇滚! – DEX