正規表現なしでヘッダー値を分離する方法

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 スニペットを使用してこのロジックを実行するには、以下の手順に従ってください。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. VCL Snippets をクリックします。

  5. Create Snippet をクリックします。

    vcl スニペットのウィンドウ

  6. Name フィールドに、適切な名前 (例: Staff User Cookie) を入力します。

  7. Type のセクションで within subroutine を選択します。

  8. Select subroutine メニューから、recv (vcl_recv を選択します。

  9. VCL フィールドに、以下の条件を追加します。

    1
    2
    3
    4
    5
    # in vcl_recv
    if (req.http.Cookie:staff_user ~ "true") {
    # some logic goes here
    return(pass);
    }
  10. Create をクリックしてスニペットを作成します。

  11. Activate をクリックして設定への変更をデプロイします。

カスタムヘッダーの使用

ヘッダー req.http.staff_userCookie から 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 のプライバシーポリシー利用規約が適用されます。