0

さて、私は私の問題のいくつかの洞察を探してこれらのinterwebsの上に行ってきました。私はおそらく80以上のスタックオーバーフロースレッドREのAPIのゲートウェイなどを介して行ってきたが、それらのどれもヘルプや話を私の問題に十分に近いようです。APIゲートウェイCORS HTTP 415

私はAPI GatewayとCORSに新たなんだけど、私は見ています問題は明確にできるかどうかを確認することができます:赤方偏移のデータベースを水和キネシス消火ホースにAPIゲートウェイプロキシを設定

を。プロキシ、消防ホース、および赤方偏移ゲートウェイがアップし、単独で呼び出されたときに作業していますが、当社の顧客のサイトのいずれかから呼び出された場合、以下のように、我々は、エラーを取得:

XMLHttpRequest cannot load [api_call_here]. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin_website_here] is therefore not allowed access. The response had HTTP status code 403. 

さて、強くCORSがあることを意味するように、必要な、右?リソース上のコンソールで、新しいエラー、CORSを有効に配備:

XMLHttpRequest cannot load [api_call_here]. Request header field $cookies is not allowed by Access-Control-Allow-Headers in preflight response. 

Ooooooooookay、有効CORS機能によって追加された新しいOPTIONSメソッドから、統合応答では、アクセス制御の下で許可されるヘッダ、許さヘッダは 'を追加します$ Cookies 'を展開します。

今私は、最初のエラーに非常によく似た新しいエラーが発生します。

XMLHttpRequest cannot load [api_call_here]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin [origin_website_here] is therefore not allowed access. The response had HTTP status code 415. 

通知は最初のエラーは、HTTPステータスコード403を有しており、この第三の1は、ステータスコード415を持っている私はここにあります問題があるプロキシメソッド、ボディマッピングテンプレートとして機能するGETメソッドに入ると、「テンプレートが定義されていないとき(推奨)」が選択されています。

ここで、APIゲートウェイが一致するテンプレートを見つけられなかった場合、415エラーで拒否するので、前述のオプションを「リクエストのContent-Typeヘッダーに一致するテンプレートがない場合」に変更しました。これにより、エラーは消えましたが、原点から呼び出されたときにデータはまだ赤方偏移に固定されません。私が郵便配達員、不眠症、または普通の古いアドレスバーからapiを直接呼び出すと、レコードがうまく追加されます。

クロムを開いてヘッダーを見ると、cookieがtext/htmlとして表示されていることがわかります。

テンプレートのマッピングに関しては、application/jsonのマップのみを定義しています。それは問題の一部になる可能性がありますか?次のように

はまた、Chromeのコンソールから見たレスポンスヘッダは次のとおりです。

content-length:37 
content-type:application/json 
date:Wed, 19 Apr 2017 23:43:35 GMT 
status:415 
via:1.1 [blahblabbleblah].cloudfront.net (CloudFront) 
x-amz-cf-id:[blahblabbleblah] 
x-amzn-requestid:[blahblabbleblah] 
x-cache:Error from cloudfront 

私はこれまで比較的新しいですので、私は特にそれが文句を言っていることを与えて、CloudFrontのはこのでどのように適合するか見ていけませんコンソールがアクセス制御許可元ヘッダーがないと不満を表明している間、

いずれにしても、3番目のエラーを解決する方法についての助けがあれば幸いです。

+2

Cloudfrontは、APIゲートウェイのフロントエンドロジスティクスを処理します。 API-GWは、作成したAPIごとに非表示のCloudFrontディストリビューションを作成およびコンフィグレーションし、CloudFrontを介してAPI-GWにリクエストを渡します。この場合、「X-Cache:クラウドフロントからのエラー」とは、CloudFrontがHTTPステータスコード> = 400のレスポンスを返すということだけです。エラーは「in」または「at」または「triggered by」ではありません。 CloudFrontによって生成されたものです。 CloudFrontの側面は無視できます.API-GWまたはその背後にあるプロキシサービスは、実際には 'Content-Type'が嫌いなのでエラーを投げています。 –

答えて

0

ブラウザからのリクエストのコンテンツタイプは何ですか?要求にコンテンツタイプヘッダーが指定されていない場合、APIゲートウェイはデフォルトで "application/json"とみなします。

Opening up chrome and looking at the header i see that the cookie is coming across as text/html.

「Content-type」ヘッダーの値が「text/html」に設定されていることを意味するのかどうかはわかりません。はいの場合は、それが問題です。一致するテンプレートが必要になるか、「テンプレートがリクエストのContent-Typeヘッダーに一致しない場合」を選択してデフォルトでパススルーする必要があります。

関連する問題