<ph type="x-smartling-placeholder"></ph>
  現在、Apigee Edge のドキュメントが表示されています。
  
     Apigee X のドキュメント。 詳細
症状
    統合デベロッパー ポータルからの API 呼び出しが失敗し、
    Unknown Error、または
    この API を試す
    できます。
  
エラー メッセージ
空のレスポンス、または API に関する次のエラー メッセージが表示される場合があります。 統合ポータルで管理できます。
Unknown Error
デベロッパー ツール >コンソールのタブを開くと、次の画面が表示されます。 error:
Access to XMLHTTPRequest at 'API_URL' from origin 'URL_of_Integrated_DevPortal' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
ページに表示されている一般的なエラー メッセージ <ph type="x-smartling-placeholder"></ph> デベロッパー ツール >[Console] タブの内容は次のとおりです。
  
考えられる原因
| 原因 | 説明 | トラブルシューティングの実施対象 | 
|---|---|---|
| 未処理のポリシー障害 | API リクエストのランタイム フローでいずれかのポリシーが失敗した場合、CORS ヘッダーなしでデフォルトのエラー レスポンスが送信されます。 | Edge Public Cloud ユーザー | 
| Access-Control-Allow-Origin に複数の値 | Assign Message ポリシーで Set ではなく Add を使用。 | Edge Public Cloud ユーザー | 
原因: 未処理のポリシー障害
<ph type="x-smartling-placeholder">診断
<ph type="x-smartling-placeholder">2XX以外のレスポンスが想定される場合にのみ、問題が発生することを確認します。- リクエストが失敗する場合は、プロキシフローにポリシーがあることを確認します。
 - <ph type="x-smartling-placeholder"></ph>
    リクエストをトレースし、
    
continueOnError="false"でエラーが発生し、エラーが発生しています。 - 「はい」の場合は、 <ph type="x-smartling-placeholder"></ph> AssignMessage CORS ポリシーが実行されたか、エラーが発生しなかったか できます。
 - そうでない場合、それがこの問題の原因です。
これは、 要素を持つすべてのポリシーcontinueOnError="false"が失敗すると、リクエストは エラー レスポンス フロー。明示的な障害処理が用意されていない場合、 エラー レスポンス フローが返され、それに対応するデフォルトのエラー レスポンスが ポリシーに送り返されますこのエラー レスポンスに何も含まれていない CORS ヘッダー。その結果、統合された開発者からの API 呼び出しは、 ポータルがUnknown errorで失敗する。 
次のスクリーンショットは、エラー メッセージの例と、 成功メッセージが表示されます。
統合ポータルの [この API を試す] パネルのエラー メッセージの例 プロキシの [Trace] ウィンドウで次の操作を行います。
  
統合ポータルの [この API を試す] パネルの成功メッセージの例 プロキシの [Trace] ウィンドウで次の操作を行います。
  
解決策
- デフォルトのエラー メッセージに頼る代わりに、 <ph type="x-smartling-placeholder"></ph> エラー レスポンスを処理するために、障害ルールを実装する必要があります。 を含める AssignMessage CORS ポリシーを適切なヘッダーで呼び出し、 (<ph type="x-smartling-placeholder"></ph>) FaultRule を実装します。
 - 場合によっては、ネットワークごとに障害ルールを定義できない fault(障害)デフォルトの障害ルールを実装して CORS ポリシーをサポートしています。
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxyEndpoint name="proxy-endpoint-name">
    <Description/>
    <!-- Add a default fault rule to add CORS -->
    <DefaultFaultRule name="fault-rule">
        <Step>
            <Name>add-cors</Name>
        </Step>
    </DefaultFaultRule>
    <FaultRules/>
    <!--
    <Flows />
    Rest of the proxy definition
    -->
</ProxyEndpoint>原因: Access-Control-Allow-Origin に複数の値がある
診断
- アプリケーションの Access-Control-Allow-Origin ヘッダーの値をチェックする <ph type="x-smartling-placeholder"></ph> トレース セッションを記録します。
 - Access-Control-Allow-Origin ヘッダーで許可される値は 1 つだけです。 定義します。複数の値を設定すると CORS の問題が発生し、 レスポンスをレンダリングできません。
 - トレース内の Access-Control-Allow-Origin  ヘッダーの値が
    次のようになります。
*,*これは、ターゲット サーバーと AssignMessage CORS ポリシーによって値が設定されます。 - これは、ユーザーが
    Access-Control-Allow-Origin 用の 
<Add> element( またはバックエンド自体が複数の値を設定しています。 
*,* と等しい Access-Control-Allow-Origin の例:
  
* と等しい Access-Control-Allow-Origin の例:
  
<Add> の使用例:
  
<Set> の使用例:
  
解決策
- 推奨されるアプローチは、
    
<Set> element( Access-Control-Allow-Origin の<Add> elementなど) 指定できる値は 1 つだけです - または、Access-Control-Allow-Origin ヘッダーを 1 か所または <ph type="x-smartling-placeholder"></ph> AssignMessage CORS ポリシーまたはターゲット サーバー。
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="set-cors"> <DisplayName>Set CORS</DisplayName> <FaultRules/> <Properties/> <Set> <Headers> <Header name="Access-Control-Allow-Origin">*</Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Apigee サポートのサポートが必要な場合は、 診断情報の収集が必要な場合。
診断情報の収集が必要な場合
以下の診断情報を収集して連絡する Apigee Edge サポート:
- 組織名
 - 環境名
 - API プロキシ名
 - エラーを再現するための完全な curl コマンド
 - API リクエストのトレース ファイル
 - ターゲット/バックエンド サーバーからのレスポンスの完全な出力と、 ペイロードのサイズ