2023.02.27   2024.02.21

【AWS】POSTのクエリパラメータが消える(CloudFront)

AWS,  Vue    

ブラウザからCloudFrontを経由してVueの管理画面に接続し、バックエンドのAPIを呼び出してログインするシステムについてのお話です。

ログイン時に必要な情報(ユーザー名やパスワードの情報)をクエリ文字列パラメータとしてPOSTに渡しても、APIに上手く渡せず消えてしまう事象が発生して困りました。

今回の記事はその際の対応についてのメモ書きです。

システム構成のイメージは次のようになります。

原因

CloudFrontのビヘイビアの設定でクエリ文字列パラメータが転送されないようになっていた為でした。

対応

CloudFrontのビヘイビアの設定を変更します。

マネージメントコンソールでCloudFrontまで移動して編集対象のディストリビューションを選択します。

選択したら、「ビヘイビア」タブをクリックし、対象のビヘイビアを選んで「編集」ボタンを押下します。

「キャッシュキーとオリジンリクエスト」欄の「クエリ文字列」を「すべて」に変更します。

後は編集を完了するとクエリ文字列パラメータがバックエンドのAPIに届くようになります。

このあたりの設定の説明はマニュアルの「オリジンリクエストポリシー」と一致していそうです。

オリジンリクエストポリシー

オリジンリクエストポリシーは、オリジンへのリクエストが行われたとき(キャッシュミスまたは再検証)に CloudFront がリクエストタイムメタデータをオリジンに送信する方法を管理します。これはCloudFront によって生成される特定のメタデータであり、クライアントから直接提供されるものではなく、厳密には転送オペレーションではないため、この機能はヘッダー転送からオリジンリクエストに名前が変更されました。その例として、CloudFront が IP アドレスやユーザーエージェントヘッダーなどのクライアント提供のデータから生成できる Geo ヘッダーとデバイスタイプヘッダーがあります。オリジンリクエストポリシーでは、CloudFront がオリジンに送信するヘッダー、クエリ文字列パラメータ、Cookie を設定できます。

Headers

None – いずれのヘッダーもオリジンに転送しません
Whitelist – 特定のリストされたヘッダーをオリジンに転送します。定義済みの共通ヘッダーの一覧から選択するか、独自のカスタムヘッダーを入力します
All Viewer headers and whitelisted CloudFront-* Headers – クライアントによって指定されたすべてのヘッダーと、選択した CloudFront で生成されたヘッダーを転送します
All viewer headers – クライアントによって提示されたすべてのヘッダーを転送しますが、CloudFront で生成されたヘッダーは転送しません

Query strings

All – リクエスト URL に存在するすべてのクエリ文字列パラメータを転送します
None – クエリ文字列パラメータを転送しません
Whitelist – 指定したクエリ文字列パラメータのみを転送します


Cookies

All – リクエスト内に存在するすべての Cookie を転送します
None – クッキーを転送しません
Whitelist – 指定した Cookie のみを転送します

これを見るとクエリ文字列だけでなく、ヘッダーやcookieの設定についても注意が必要そうですね。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信