1

カスタム ヘッダーを wcf oData サービスに送信する必要がありますが、次の関数ではヘッダーが変更されません。

entities.onReady(function () {

    entities.prepareRequest = function(r) {
        r[0].headers['APIKey'] = 'ABC';
    };

    entities.DataServiceClient.toArray(function (cli) {
        cli.forEach(function (c) {
            console.log(c.Name)
        });
    });
});

ヘッダーは影響を受けません。どんな手掛かり?

ありがとう!

4

2 に答える 2

0

編集

よく考えてみると、JayData の MERGE リクエストにはまだ何か問題があるようです。

これは CORS ではなく、それとは何の関係もありません。

カスタム ヘッダーを使用した JayData oData リクエスト - ROUND 2 を参照してください。

次の「ハック」は機能しますが、上記の質問はこの問題を新しいレベルに引き上げるはずです。

----------

古い答え

気にしないで解決策を見つけました。

prepareRequestJayData 1.3.2 (ODataProvider) で壊れているようです。

ハックとして、providerConfiguration (oDataProvider.js) に extraHeaders オブジェクトを追加しました。

  this.providerConfiguration = $data.typeSystem.extend({
                   //Leave content unchanged and add the following:
                    extraHeaders: {}
                }, cfg);

次に、865 行目で requestData を次のように変更します。

var requestData = [
                    {
                        requestUri: this.providerConfiguration.oDataServiceHost + sql.queryText,
                        method: sql.method,
                        data: sql.postData,
                        headers: _.extend({
                            MaxDataServiceVersion: this.providerConfiguration.maxDataServiceVersion
                        },this.providerConfiguration.extraHeaders)
                    },

注: 利便性のために lodash を使用しています。任意の js エクステンドでうまくいくはずです。

次に、次のようにクライアントを作成します。

 var entities = new Entities.MyEntities({
            name: 'oData',
            oDataServiceHost: 'http://myhost.com/DataService.svc',
            maxDataServiceVersion: "2.0",
            //enableJSONP: true,
            extraHeaders: {apikey:'f05d1c1e-b1b9-5a2d-2f44-da811bd50bd5', Accept:'application/json;odata=verbose'}
        }
    );
于 2013-10-09T12:31:54.743 に答える
0

マークされた答えは間違っているようです。同様の問題に苦しんでいましたが、datajsを変更せずに機能しました。

私の問題は、クロス ドメイン (CORS) リクエストを行っていたが、ヘッダーを明示的に許可していなかったことです。正しい CORS ヘッダーを Web サービスに追加すると、機能しました。

于 2014-01-10T08:29:22.800 に答える