2

我刚刚开始使用 Apache Cordova。我有一个调用(通过 ajax)soap 服务器的库。

当我在本地机器上用 chrome 运行这些脚本时,在尝试调用服务时出现跨站点脚本错误。

当我在 iOS 模拟器中使用 Cordova 浏览器运行相同的代码时,脚本似乎可以很好地访问服务器并且正确接收到响应数据。

所以我的问题是 Cordova 浏览器如何能够在没有跨站点脚本权限和 JSONP 的情况下发出这些请求?我注意到的一件事是,当从 iOS 发送请求时,没有“Origin”标头。这是否允许 Cordova 浏览器悄悄地绕过跨站点脚本要求?设备上的 node.js 服务器(我相信这就是 Cordova 的工作方式)是否有可能正在操纵标头以允许这样做?

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

有人有这方面的经验吗?

4

1 回答 1

10

默认情况下,Phonegap 允许跨域请求。如果您担心安全性,可以使用域白名单限制此操作。如果您使用的是 jQuery,请设置$.support.cors = true;为允许跨域请求。

此页面详细介绍了 Phonegap 中的跨站点脚本安全性。

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

"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
于 2013-10-25T16:25:54.023 回答