1. ホーム
  2. angularjs

[解決済み] Apigee API へのリクエストで 401 レスポンスエラーが発生する

2022-02-15 11:56:34

質問

AngularのサービスからApigee APIにリクエストをしようとしています。Postmanで動作しますが、以下のような問題が発生します。 401 AngularコードからAPIへのリクエストを行う際に、不正なエラーが発生します。

以下は、私が試しているAngularのコードです。

$http({
       url: "https://xxx_test.com/data?sdate=date",
       method: "GET",
       headers: {
               'apikey': 'XXXXXXXXXXXXXXXXX'                             
             },
     })

これは、私が得ている応答です。

{"fault":{"faultstring":"Failed to resolve API Key variable request.header.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey" }}} {}{{"faultstring":"false to resolve APIのキーを解決できませんでした}} {"faultstring":"Failed to resolve APIのキーを解決できませんでした}{{"]{"

解決方法は?

問題はサーバー側の設定にありました。私たちはAPIにapigeeを使用しているので、CORSのための設定が必要です。

以下はその設定です。

<FaultResponse>
        <Set>
            <StatusCode>200</StatusCode>
            <ReasonPhrase>CORS OK</ReasonPhrase>
            <Headers>
                <Header name="Access-Control-Allow-Methods">GET, POST, PUT, DELETE, PATCH</Header>
                <Header name="Access-Control-Allow-Origin">*</Header>
                <Header name="Access-Control-Allow-Headers">authorization,content-type,api-key</Header>
            </Headers>
            <Payload/>
            <!-- Remove default fault content. -->
        </Set>
    </FaultResponse>

RaisFaultポリシーを条件付きでフローに追加します。

<Condition>request.verb == "OPTIONS" AND request.header.origin != null AND request.header.Access-Control-Request-Method != null</Condition>