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

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

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

カスタムヘッダーの使用

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