【问题标题】:Apache Cordova (Phonegap): is jsonp needed for cross-site scripting?Apache Cordova (Phonegap):跨站点脚本是否需要 jsonp?
【发布时间】:2013-11-02 03:09:11
【问题描述】:

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

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

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

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

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

有人有这方面的经验吗?

【问题讨论】:

    标签: javascript ajax cordova cross-domain


    【解决方案1】:

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

    This page 对 Phonegap 中的跨站点脚本安全性进行了细分。

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

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

    【讨论】:

    • 感谢您的解释。 chrome 技巧也非常有用(在 chrome 中测试更容易)。你摇滚!
    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多