12

私は Azure API Management を使用して、統合目的でサード パーティにクリーンなインターフェイスを提供しています。

バックエンドでこのオブジェクトを作成するために、JSON オブジェクトを使用して POST を実行したいと考えています。これは、ポータル サイトで利用可能なテスト コンソールでは正常に動作しますが、Web ページから単純なクライアント スクリプトを実行しようとすると動作しません。

$.ajax({
    url: 'https://.azure-api.net/api/samplerequest/create?' + $.param(params),
    type: 'POST',
    data: JSON.stringify(sampleRequest),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data, par2, par3) {
        $("#txtResult").val(JSON.stringify(data));
    }
});

contentType ヘッダーを「application/json」に設定すると、ブラウザーは最初に OPTIONS 呼び出しを実行するように強制されます。私の WebAPI プロジェクトは CORS を有効にするようにセットアップされており、これをテストしました。私の WebAPI プロジェクトは、OPTIONS メソッドに対して次のヘッダーを返します。

Access-Control-Allow-Head... content-type Access-Control-Allow-Orig... *

ただし、Azure Management API を使用してこの操作を呼び出そうとすると、OPTIONS メソッドに対して 200 ステータスが返されますが、他のヘッダーは存在しません。私は多くのポリシー構成を試しましたが、これが私の最新の試みでした:

<policies>
    <inbound>
        <base />
        <cors>
            <allowed-origins>
                <origin>*</origin>
                <!-- allow any -->
            </allowed-origins>
            <allowed-methods>
                <method>POST</method>
                <method>OPTIONS</method>
            </allowed-methods>
            <allowed-headers>
                <header>contentType</header>
            </allowed-headers>
        </cors>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

この作業を行うために何が欠けていますか?

4

1 に答える 1

2

ajax リクエストのヘッダーは、「contentType」ではなく「content-type」にする必要があります

于 2019-03-04T19:14:43.147 に答える