我刚刚开始使用 Apache Cordova。我有一个库可以调用(通过 ajax)到 soap 服务器。
当我在我的本地计算机上使用 chrome 运行这些程序时,我在尝试调用该服务时遇到跨站点脚本错误。
当我在 iOS 模拟器中使用 Cordova 浏览器运行完全相同的代码时,脚本似乎可以正常访问服务器并且可以正确接收响应数据。
所以我的问题是 Cordova 浏览器如何在没有跨站点脚本权限和 JSONP 的情况下发出这些请求?我注意到的一件事是,当从 iOS 发送请求时,没有“Origin” header 。这是否允许 Cordova 浏览器偷偷绕过跨站点脚本要求?设备上的 node.js 服务器(我相信这就是 Cordova 的工作方式)是否可能正在操纵 header 以允许这样做?
我想避免在我的网站上启用跨站点脚本,所以我认为这个“功能”很好,但我想知道它是否也是一个安全漏洞。
谁有这方面的经验?
最佳答案
默认情况下,Phonegap 允许跨域请求。您可以使用 domain whitelisting 来限制它如果你担心安全。如果您使用的是 jQuery,请设置 $.support.cors = true;
以允许跨域请求。
This page在 Phonegap 中对跨站点脚本安全性进行了分割。
顺便说一句,您可以使用 Google Chrome 的巧妙技巧来允许跨站点脚本,从而在 Ripple 模拟器中测试您的 Phonegap 应用程序,例如:设置命令行参数 --disable-web- Chrome 快捷方式中的安全性
,例如
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
关于javascript - Apache Cordova(Phonegap): is jsonp needed for cross-site scripting?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577370/