English
日本語
レスポンス Cookie の取り扱いについて
最終更新日 2021-05-10
VCL でレスポンス Cookie を読み取る従来の方法では、beresp.http.Set-Cookie
または resp.http.Set-Cookie
の変数を調べ、正規表現を使用して値が抽出されます。しかし、複雑な文字列や引用符付きの文字列を正規表現で解析するのは不安定で、エッジケースによって失敗しやすいため、これは理想的な方法ではありません。また、オリジンが複数の Set-Cookie
ヘッダーを送信する場合のように、同じ名前を持つ複数のヘッダーを読み取ることができません。これら2つの理由から、Fastly では ヘッダーの数にかかわらず、Set-Cookie
へッダーから名前付きの値を抽出する方法をサポートしています。
名前付きの値にアクセスするには、リクエストのどの部分かに応じて、beresp
または resp
を持つ関数を使用します。
setcookie.get_value_by_name(beresp, "name")
または
setcookie.get_value_by_name(resp, "name")
"name"
は値の名前に置き換えます。例えば、以下のようなオリジンからの HTTP レスポンスがあるとします。
1HTTP/1.1 200 OK2Cache-Control: max-age=603Content-Type: text/html; charset=utf-84Content-Length: 808065Accept-Ranges: bytes6Date: Tue, 11 Aug 2015 19:00:04 GMT7Age: 1238Connection: keep-alive9Set-Cookie: one=a; httponly; secure10Set-Cookie: two=b or not to b; httponly
そこで、以下のような関数を使用します。
set resp.http.X-One = setcookie.get_value_by_name(resp, "one");set resp.http.X-Two = setcookie.get_value_by_name(resp, "two");
resp.http.X-One
が「a」に、resp.http.X-Two
が「b or not to b」に設定されます。
このロジックは、アップロードされたカスタム VCL だけでなく、コントロールパネル全体で使用することができます。例:
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。