次のページで、アプリケーションがユーザーへの「アラートメッセージ」を保持するCookieを設定したかどうかを検出しようとしています。検出された場合、Javascriptはそれを表示します。
私のvcl_fetch()では、特定のCookie値「alert_message」がSet-Cookieヘッダー(おそらくVCL変数beresp.http.Set-Cookie)のどこかに表示されるかどうかを検出する必要があります。検出された場合、その次のページをキャッシュしたくありません(VarnishはデフォルトでSet-Cookieヘッダーを削除するため、ブラウザーに戻る前にアラートメッセージが消去されます)。
だからここに私の簡単なテストがあります:
if(beresp.http.Set-Cookie ~ "alert_message") {
set req.http.no_cache = 1;
}
不思議なことに、それは真と評価されません。
そこで、変数をサーバーヘッダーにスローして、どのように表示されるかを確認します。
set beresp.http.Server = " MyApp Varnish implementation - test reading set-cookie: "+beresp.http.Set-Cookie;
しかし、何らかの理由で、これは応答ヘッダーの最初のSet-Cookie行のみを表示します。
関連する応答ヘッダーは次のとおりです。
Server: MyApp Varnish implementation - test reading cookie: elstats_session=7d7279kjmsnkel31lre3s0vu24; expires=Wed, 10-Oct-2012 00:03:32 GMT; path=/; HttpOnly
Set-Cookie:app_session=7d7279kjmsnkel31lre3s0vu24; expires=Wed, 10-Oct-2012 00:03:32 GMT; path=/; HttpOnly
Set-Cookie:alert_message=Too+many+results.; expires=Tue, 09-Oct-2012 20:13:32 GMT; path=/; domain=.my.app.com
Set-Cookie:alert_key=flash_error; expires=Tue, 09-Oct-2012 20:13:32 GMT; path=/; domain=.my.app.com
Vary:Accept-Encoding
すべてのSet-Cookieヘッダー行で文字列検出を読み取って実行するにはどうすればよいですか?