Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?
Posted
技术标签:
【中文标题】Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?【英文标题】:How Ajax call is working in mobile app (PhoneGap), but not in PC browser? 【发布时间】:2011-11-18 10:28:25 【问题描述】:Ajax 对服务器页面的调用如何在移动应用程序中完美运行(使用 PhoneGap)。但是,当我从 PC 浏览器中的普通 html 页面运行相同的 Ajax 调用时,它不起作用。我想问题是跨域的。但是,它如何在移动应用中运行良好。
使用JSONP
它在电脑浏览器和移动应用程序(使用PhoneGap)中运行良好。但在没有datatype="jsonp"
的移动应用中也可以正常工作。
【问题讨论】:
【参考方案1】:来自PhoneGap FAQ:
问。我想为 phonegap 创建一个应用程序,以通过 AJAX 访问外部部署的 Web 服务。我该如何解决这个问题 XmlHttpRequest的跨域安全策略?
A.跨域安全策略不影响PhoneGap 应用程序。由于 html 文件由 webkit 使用 file:// 协议调用,因此安全策略不适用。 (在 android 中,您可以通过编辑 AndroidManifest.xml 将 android.permission.INTERNET 授予您的应用程序)
【讨论】:
谢谢你。但是,在 PC 浏览器中,我们也使用 file:// 协议(只需在浏览器中打开 HTML 页面)。这是行不通的。如果跨域安全策略不影响 file://protocol 。那么请提供一些相关信息(可能只是发布链接)。 浏览器中的跨域策略仍然对本地文件强制执行。您将不能够从浏览器发出跨域请求。 另外,不同的浏览器对本地文件的跨域策略也不一样,参见***.com/questions/3988494/…【参考方案2】:移动应用程序(PhoneGap、Adobe AIR、Titanium、Native 等)对 XHR 请求没有桌面浏览器的同源限制。他们可以进行任何他们想要的跨域调用。这就是为什么它在手机上运行良好而不是在桌面上运行良好的原因。
JSONP 在两者中都能正常工作,因为它不使用 XHR。它使用
【讨论】:
【参考方案3】:我猜所有基于 WebView 的视图都没有关于跨域 XHR 请求的限制规则。 跨域请求的另一种方式是服务器端桥接。
【讨论】:
【参考方案4】:您可以使用 iqouta 在 phonegap 中进行 ajax 调用搜索 iqouta 易于使用!!
【讨论】:
使用 iqouta 范围!例如以上是关于Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?的主要内容,如果未能解决你的问题,请参考以下文章
React:如何将我的 ajax api 调用移动到一个单独的组件中?