【问题标题】:How Ajax call is working in mobile app (PhoneGap), but not in PC browser?Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?
【发布时间】:2011-11-18 10:28:25
【问题描述】:

Ajax 对服务器页面的调用如何在移动应用程序中完美运行(使用 PhoneGap)。但是,当我从 PC 浏览器中的普通 HTML 页面运行相同的 Ajax 调用时,它不起作用。我想问题是跨域的。但是,它如何在移动应用中运行良好。

使用JSONP 它在电脑浏览器和移动应用程序(使用PhoneGap)中运行良好。但在没有datatype="jsonp" 的移动应用中也可以正常工作。

【问题讨论】:

    标签: jquery cordova jsonp


    【解决方案1】:

    来自PhoneGap FAQ

    问。我想为 phonegap 创建一个应用程序,以通过 AJAX 访问外部部署的 Web 服务。我该如何解决这个问题 XmlHttpRequest的跨域安全策略?

    A.跨域安全策略不影响PhoneGap 应用程序。由于 html 文件由 webkit 使用 file:// 协议调用,因此安全策略不适用。 (在 Android 中,您可以通过编辑 AndroidManifest.xml 将 android.permission.INTERNET 授予您的应用程序)

    【讨论】:

    • 谢谢你。但是,在 PC 浏览器中,我们也使用 file:// 协议(只需在浏览器中打开 HTML 页面)。这是行不通的。如果跨域安全策略不影响 file://protocol 。那么请提供一些相关信息(可能只是发布链接)。
    • 浏览器中的跨域策略仍然对本地文件强制执行。您将能够从浏览器发出跨域请求。
    • 另外,不同的浏览器对本地文件的跨域策略也不一样,参见stackoverflow.com/questions/3988494/…
    【解决方案2】:

    移动应用程序(PhoneGap、Adobe AIR、Titanium、Native 等)对 XHR 请求没有桌面浏览器的同源限制。他们可以进行任何他们想要的跨域调用。这就是为什么它在手机上运行良好而不是在桌面上运行良好的原因。

    JSONP 在两者中都能正常工作,因为它不使用 XHR。它使用

    【讨论】:

      【解决方案3】:

      我猜所有基于 WebView 的视图都没有关于跨域 XHR 请求的限制规则。 跨域请求的另一种方式是服务器端桥接。

      【讨论】:

        【解决方案4】:

        您可以使用 iqouta 在 phonegap 中进行 ajax 调用搜索 iqouta 易于使用!!

        【讨论】:

        • 使用 iqouta 范围!例如
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-16
        • 1970-01-01
        • 2019-05-20
        • 2015-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多