0

ExtJS の作業中に別の奇妙な問題に遭遇しました。フォルダー myapp/data/users.json から JSON データを取得しますが、それをリモート サーバー (http://myserver/users.json または .../getusers.php) を指す URL アドレスに変更すると、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
        },

....

ExtJS を使用するために Apache サーバーをインストールし、成功で localhost/users.json のデータをロードできます。問題が私のシステムを作ることができると思いました。ただし、ファイアウォールをオフにして、Windows XP と Windows 7 の両方を確認しました。役に立ちませんでした。

Firebug -> Network はリモート アドレスの Http コード 200 を表示しますが、応答タブにはデータがありません (この場合は 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

何が間違っているのかわかりません。すべて問題ないようです。

ヒントをありがとう。

偽物

4

1 に答える 1

1

これはドキュメントでカバーされています:

AjaxProxy を使用して、他のドメインからデータを取得することはできません。アプリケーションがhttp://domainA.comで実行されている場合、 http://domainB.comからデータをロードすることはできません 。これは、ブラウザーには、ドメインが AJAX を介して相互に通信することを禁止するセキュリティ ポリシーが組み込まれているためです。

別のドメインからデータを読み取る必要があり、プロキシ サーバーを設定できない場合 (自分のドメインの Web サーバーで実行され、要求を透過的にhttp://domainB.comに転送し、実際に送信されたように見せかけるソフトウェア) http : / /domainB.comは、JSON-P 応答をサポートするように設定されています。詳細については、JsonPProxy の紹介ドキュメントを参照してください。

于 2012-08-09T11:00:12.567 に答える