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

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 スニペットのリンクをクリックします。VCL スニペットのページが表示されます。

  5. Create Snippet をクリックします。Create a VCL スニペットページが表示されます。

    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 リンクを使用することで、必要な場合のみにこのヘッダーを作成することができます。詳しくは、条件の使用ドキュメントをご覧ください。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合はお問い合わせください : support@fastly.com