我刚刚开始使用Apache Cordova。 我有一个调用(通过 ajax)到 soap 服务器的库。
当我在 chrome 中的本地计算机上运行这些时,在尝试调用服务时出现跨站点脚本错误。
当我在 iOS 模拟器中使用 Cordova 浏览器运行相同的完全相同的代码时,脚本似乎可以很好地击中服务器,并且正确接收响应数据。
所以我的问题是Cordova浏览器如何在没有跨站点脚本权限和JSONP的情况下发出这些请求? 我注意到的一件事是,当请求从iOS发送时,没有"Origin"标头。 这是否允许Cordova浏览器秘密规避跨站点脚本要求? 设备上的节点.js服务器(我相信这就是 Cordova 的工作方式)是否有可能操纵标头以允许这样做?
我想避免在我的网站上启用跨站点脚本,所以我认为这个"功能"很好,但我想知道它是否也是一个安全漏洞。
有人有这方面的经验吗?
默认情况下,Phonegap 允许跨域请求。如果您担心安全性,可以使用域白名单来限制这一点。如果您使用的是 jQuery,请将 $.support.cors = true;
设置为允许跨域请求。
此页面细分了 Phonegap 中的跨站点脚本安全性。
顺便说一下,您可以与谷歌浏览器一起使用一个巧妙的技巧来允许跨站点脚本,从而在瑞波模拟器中测试您的Phonegap应用程序,例如:在Chrome快捷方式中设置命令行参数--disable-web-security
,例如
"C:Program FilesGoogleChromeApplicationchrome.exe" --disable-web-security