- English
- 日本語
正規表現なしでヘッダー値を分離する方法
最終更新日 2020-09-24
Fastly では、正規表現なしでヘッダーのサブフィールド値を読み取りやすい方法で抽出することが可能です。Headers subfields は、value1=123value123; testValue=asdf_true; staff_user=true;
や max-age=0, surrogate-control=3600
に類似したボディシンタックススタイルを含むヘッダーです。これには Cookie、Set-Cookie、Cache-Control、カスタムヘッダーなどが含まれます。Fastly では、以下のシンタックスでキー値を分離することができます。
req.http.Header-Name:key-name
例えば、クライアントからの Cookie
リクエストが value1=123value123; testValue=asdf_true; staff_user=true;
の場合、以下のロジックで staff_user
の値を分離することができます。
set req.http.Staff-User = req.http.Cookie:staff_user;
サブフィールド関数を使用することで、同じことが実現できます。
set req.http.Staff-User = subfield(req.http.Cookie, "staff_user", ";");
VCL スニペットを使用するか、カスタムヘッダーを使用してこのロジックを追加できます。
警告
subfield 関数と :
アクセサは、Set-Cookie
ヘッダーに使用することはできません。
VCL スニペットの使用
staff_user
内の req.http.Cookie
値に基づき、VCL スニペットを使用してこのロジックを実行するには、以下の手順に従ってください。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
VCL Snippets をクリックします。
Create Snippet をクリックします。
Name フィールドに、適切な名前 (例:
Staff User Cookie
) を入力します。Type のセクションで within subroutine を選択します。
Select subroutine メニューから、recv (
vcl_recv
) を選択します。VCL フィールドに、以下の条件を追加します。
12345# in vcl_recvif (req.http.Cookie:staff_user ~ "true") {# some logic goes herereturn(pass);}Create をクリックしてスニペットを作成します。
- Activate をクリックして設定への変更をデプロイします。
カスタムヘッダーの使用
ヘッダー req.http.staff_user
へ Cookie
から staff_user
の値を分離するには、以下の設定でカスタムヘッダーを作成します。
以下の要領で、Create a header ページの各フィールドに入力します。
- Name フィールドに
Staff User Header
と入力します。 - Type メニューから Request を選択し、Action メニューから Set を選択します。
- Destination フィールドに
http.staff_user
と入力します。 - Source フィールドに
req.http.Cookie:staff_user
と入力します。 - Ignore if set メニューから No を選択します。
- Priority フィールドに
10
を入力します。
これにより、各インバウンドリクエストで staff_user
ヘッダーが送信されます。
注意
Attach a condition
リンクを使用することで、必要な場合のみこのヘッダーを作成することができます。詳しくは、条件の使用ドキュメントをご覧ください。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。