4

アプリから Web サービスからデータを取得してリストをロードし、プル リフレッシュと ListPaging プラグインを使用してスクロールでさらにロードしようとしています。これを flickr API で試したところ問題なく動作しましたが、独自のサービスにアクセスしようとすると問題が発生します。これは、Base64 でエンコードされたデータを含む「Authorization」ヘッダーと、応答の形式を決定する「Accept」ヘッダーが必要であるためです。

これは私が自分の店を定義した方法です:

Ext.define('myshop.store.CatalogListStore',{
    extend:'Ext.data.Store',
    requires: [
        'myshop.model.CatalogListItem'
    ],
    config:{
        model:'myshop.model.CatalogListItem',
        autoLoad :true,
        proxy: {
            type: 'jsonp',
            url: 'http://192.168.23.89:7003/xxx-service/test/catalog/list',
            useDefaultXhrHeader : false,
            withCredentials:true,
            method : 'GET',
            headers: {
                'Accept': 'application/json',
                'Authorization': 'Basic YX5iOmM='
            },
            extraParams: {
                format : 'json',
                pagesize : 10
            },
            reader: {
                type: 'json',
                rootProperty: 'categories.data'
            }
        }
    }
}

これは、Chrome のネットワーク コンソールに表示されるものです。

Request URL:http://192.168.23.89:7003/xxx-service/test/catalog/list?_dc=1354529083930&format=json&pagesize=10&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback2
Request Method:GET
Status Code:403 Forbidden
**Request Headers**
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:192.168.23.89:7003
Referer:http://localhost/myshop/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11
**Query String Parameters**
_dc:1354529083930
format:json
pagesize:10
page:1
start:0
limit:25
callback:Ext.data.JsonP.callback2
Response Headersview source
Content-Length:0
Content-Type:text/xml
Date:Mon, 03 Dec 2012 10:04:40 GMT
Server:Apache-Coyote/1.1

ポスターを使用して Authorization ヘッダーを使用してこれらのサービスにアクセスすると、応答を確認できますが、要求でヘッダーが渡されないため、「403 禁止」ステータスが表示されます。

このようなヘッダーを使用すると機能します:

Ext.Ajax.request({
        url: 'resources/data/templates.json',
        headers: {
            'Accept': 'application/json',
            'Authorization': 'Basic T3JkZXJSZWxlYXNlUmVmcmVzaGVyfk9yZGVyUmVsZWFzZVJlZnJlc2hlcjpPcmRlclJlbGVhc2VSZWZyZXNoZXI='
        },
        success: function(rsp){
        }
});

しかし、listPaging プラグインを使用したいので、これを行うことはできません。

4

1 に答える 1

1

JSONP Works は、ページ ヘッダーにリクエスト URL を挿入します。リクエストを認証する必要がある場合は、次のように URL に追加する必要があります。

'http://192.168.23.89:7003/xxx-service/test/catalog/list?auth=1223456'

JSONP を使用する必要があると確信していますか?

詳細については、この回答を参照してください

于 2012-12-21T04:12:20.580 に答える