AWS API Gatewayでコンテンツネゴシエーションを使用して、いくつかのデータを取得する2つの手段を提供するAPIを設定しました。AWS APIゲートウェイボディマップワイルドカード
私の問題は、default Content-Type
header appears to be application/json
のため、以下のマークアップの例がapplication/json
として返され、レンダリングされずに表示されているということです。
ボディマッピングテンプレートtext/html
は、ブラウザによって送信されたAccept
ヘッダーで完全一致を試行します。たとえば、Chromeは
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
です。明らかに!== text/html
です。つまり、上記のようなリクエストを送信すると、正しい応答が表示されますが、間違ったコンテンツタイプのヘッダーが表示されます。
私のオプションは
- ワイルドカードや正規表現の仕事をするために手段を検索
text/html
- にデフォルトを設定するいくつかの方法を探すように思われます。例えば。
text/*
私は上記を役に立たなかったが、私は何かが欠けていると思っている。
一つは、JSON(
Accept: application/json
){ "id": "d4ef7d3f-f2..." }
別で応答レスポンス例は
のpostMessage
を送信マークアップと、いくつかのJSです。コンテンツネゴシエーションのためのAPIゲートウェイ闊歩Accept: text/html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example</title> </head> <body> <script> parent.postMessage({"id": "d4ef7d3f-f2..."}, "...", window); </script> </body> </html>
骨子
https://gist.github.com/benswinburne/3a212c936e1d97fe8e17352269d6edb6
おかげでライアン例えば
- あなたの最後の文は私が完全に私はそれが他の人のために働くようになった方法を説明するためにあなたの答えに追加したその上にアイデアを与えました。残念なことに、SPAをプロキシとして使用すると、302のリダイレクトと同じドメイン上にある必要がある実際のコンテンツが存在するため、私のニーズに合わないでしょう。プロキシは、コンテンツを読み込んだ後にブラウザをリダイレクトし、JSまたはメタリフレッシュでリクエストをプロキシ処理すると遅すぎることを意味します。さらに、別のURLを使ってリダイレクトしない限り、そのアプローチではCookieを削除することは問題になります。 –