我刚刚开始使用Apache Cordova。我有一个库(通过ajax)调用soap服务器。
当我在我的本地计算机上运行Chrome时,在尝试调用服务时会出现跨站点脚本错误。
当我在iOS模拟器中使用Cordova浏览器运行相同的确切代码时,脚本似乎可以正常运行服务器并正确接收响应数据。
所以我的问题是Cordova浏览器如何能够在没有跨站点脚本权限的情况下发出这些请求。 JSONP?我注意到的一件事是,当从iOS发送请求时,没有“Origin”标头。这是否允许Cordova浏览器隐秘地规避跨站点脚本要求?是否有可能设备上的node.js服务器(我相信这是Cordova如何工作)正在操纵标头以允许这个?
我想避免在我的网站上启用跨站点脚本,所以我认为这个“功能”很好,但我想知道它是否也是一个安全漏洞。
任何人都有这方面的经验吗?
答案 0 :(得分:10)
默认情况下,Phonegap允许跨域请求。如果您担心安全问题,可以使用domain whitelisting对此进行限制。如果您使用的是jQuery,请设置$.support.cors = true;
以允许跨域请求。
This page详细说明了Phonegap中的跨站点脚本安全性。
顺便说一句,您可以使用谷歌浏览器提供一个巧妙的技巧来允许跨站点脚本,从而在Ripple模拟器中测试您的Phonegap应用程序,例如:在快捷方式中设置命令行参数--disable-web-security
Chrome,例如
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security