无法通过代理引擎从远程服务器获取数据

时间:2012-08-09 07:51:34

标签: extjs proxy connection extjs4.1

我在使用ExtJS时遇到了另一个奇怪的问题。我从我的文件夹myapp / data / users.json获取JSON数据,但当我将其更改为指向远程服务器的URL地址(http://myserver/users.json或... / getusers.php)时,我得不到任何json数据

我的代码:

Ext.define('APP.store.Users', {
    extend : 'Ext.data.Store',
    model : 'APP.model.User',
    autoLoad : true,

    proxy : {
        type : 'ajax',
        url : 'http://myserver.com/users.json', 
        //api : {
        //    //read : 'data/users.json' // it works OK
        //},

        actionMethods: {
            read: 'GET'
        },
        extraParams: {
            action: 'someaction',
            name: 'user'
        },
        noCache: false,             
        reader : {
            type : 'json',
            root : 'users',
            successProperty : 'success',
            getResponseData : function(r) {
                console.log("RESPONSE in reader: ", r);
            }
        },
        afterRequest : function(request, success) {
            console.log(request, success); // success: either true or false
        },

...

我已经安装了Apache服务器以使用ExtJS,并且可以使用succ为localhost / users.json加载数据。我认为问题可以成为我的系统。但我检查了Windows XP和Windows 7,并关闭了防火墙。它没有帮助。

Firebug - >网络显示远程地址的Http代码200,但在respone选项卡中没有数据(在本例中为json结构)。

Request headers from Firebug:
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language pl,en-us;q=0.7,en;q=0.3
Access-Control-Request-He...    x-requested-with
Access-Control-Request-Me...    GET
Connection  keep-alive
Host    myserver.com // WAS CHANGED
Origin  http://localhost
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1

我不知道可以做些什么。一切似乎都没问题。

感谢您的任何提示。

虚假

1 个答案:

答案 0 :(得分:1)

这包含在文档中:

  

AjaxProxy不能用于从其他域检索数据。如果你的   应用程序正在http://domainA.com上运行,无法从中加载数据   http://domainB.com因为浏览器具有内置的安全策略   禁止域通过AJAX相互通信。

     

如果您需要从其他域读取数据而无法设置代理   服务器(在您自己的域的Web服务器上运行的某些软件   透明地将请求转发给http://domainB.com,使其看起来像   就像他们实际来自http://domainA.com),你可以使用   Ext.data.proxy.JsonP和一种称为JSON-P的技术(JSON with   填充),这可以帮助你解决问题,只要   http://domainB.com上的服务器设置为支持JSON-P响应。   有关更多详细信息,请参阅JsonPProxy的介绍文档。