来自本机移动应用程序的 AJAX 请求

Posted

技术标签:

【中文标题】来自本机移动应用程序的 AJAX 请求【英文标题】:AJAX requests from native mobile applications 【发布时间】:2012-06-21 12:34:26 【问题描述】:

我一直在研究这个主题,但仍然有点困惑。

我有一个 Sencha Touch 2,它在我的机器上运行良好。这是因为我在我的机器的 apache 上配置了一个代理,它允许我在不需要绝对路径的情况下调用服务器。即请求是从我的机器以下列方式向服务器发出的:

url: /folder/subfolder/etc

如果在域 abc.mydomain.com 上公开访问该应用程序也可以工作,因为服务器在同一个浏览器上,显然它可以工作。

我需要知道的是:

我现在要将这个应用程序部署为原生 ios 应用程序。如果 URL 保留为绝对 URL,则这些 URL 将不起作用,因为由于没有配置代理,电话将无法解析该路径。但是,如果我将它们更改为绝对 URL,它们会起作用吗?根据我的阅读,手机不考虑访问源问题,因此它应该可以工作。

因此,如果我有以下要求:

var L_AssetAjaxConnection = new Ext.data.Connection();
        L_AssetAjaxConnection.request(
            url: /folder/subfolder/etc
            timeout: 60000,

            success: function(P_Response)
               console.write('success');
            
        );

            failure: function(P_Response)
               console.write('failed');
            

在我在 IOS 上部署之前,我将其更改为:

var L_AssetAjaxConnection = new Ext.data.Connection();
        L_AssetAjaxConnection.request(
            url: http://mydomain.com/folder/subfolder/etc
            timeout: 60000,

            success: function(P_Response)
               console.write('success');
            

            failure: function(P_Response)
               console.write('failed');
            
        );

这不适用于桌面。但是,它应该在 iPhone 上部署后工作吗?

期待您的反馈。

【问题讨论】:

【参考方案1】:

我已经在我的 android 手机上尝试过,结果是,绝对 URL 可以在本机应用程序上运行,但由于安全问题,不能在台式机上运行。

【讨论】:

【参考方案2】:

您也可以考虑在您的域上使用JSON-P 或CORS,在这种情况下,任何应用程序都可以正常工作,无论是否为原生应用程序。 Sencha 支持这两种技术(请参阅here 和here)

【讨论】:

我知道,但是 jsonp 将 url 封装在 javascript

以上是关于来自本机移动应用程序的 AJAX 请求的主要内容,如果未能解决你的问题,请参考以下文章

在 API(php)中 - 了解来自本机 iOS 应用程序或 Web 的请求的方式 [重复]

连接移动数据时 Ajax 不起作用

我如何检查来自移动应用程序或 WEB 的请求

区分http移动浏览器和移动应用请求

如何保护移动和 AJAX 调用的 JSON RESTful API?

看不到来自 Charles 的移动应用请求