2012-12-30 48 views
2

我需要從清漆中的後端響應中刪除特定的Cookie。清漆從後端響應中刪除特定的Cookie

我的後端服務器設置了一堆我不需要的cookie,不幸的是我無法控制,所以我想刪除它們。

但是我需要一些cookie,所以我希望能夠通過他們的名字刪除cookie。

例如,我想重命名一個名爲bad_cookie的cookie,但同時保留一個名爲good_cookie的cookie。

我發現了很多關於刪除特定請求cookie的資源,但沒有關於刪除後端響應cookie的資源。

這是可能的在清漆?

回答

4

如果你想重命名我認爲這將是這樣的:

sub vcl_fetch { 
    #renamed after receiving the backend 
    set beresp.http.set-cookie = regsuball(beresp.http.set-cookie, "bad_cookie", "good_cookie"); 
    set beresp.http.cookie = regsuball(beresp.http.cookie, "bad_cookie", "good_cookie"); } 
} 

sub vcl_deliver { 
    #renamed before sending the client 
    set resp.http.set-cookie = regsuball(beresp.http.set-cookie, "bad_cookie", "good_cookie"); 
    set resp.http.cookie = regsuball(beresp.http.cookie, "bad_cookie", "good_cookie"); } 
} 

如果你想刪除所有餅乾:

sub vcl_fetch { 
    #deleted after receiving the backend 
    remove beresp.http.set-cookie; 
    remove beresp.http.cookie; 
} 

sub vcl_deliver { 
    #deleted before sending the client 
    remove resp.http.set-cookie; 
    remove resp.http.cookie; 
} 

beresp.http.set-cookie只讀取第一套-Cookie header,如果你想刪除一些並保留其他人可以使用:github.com/varnish/libvmod-header **

+0

在vcl_fetch中刪除beresp.http.set-cookie將刪除所有cookie。它看起來像你不能刪除一些響應cookies並保留其他人,因爲刪除beresp.http.set-cookie只讀取第一個Set-Cookie頭。仍然沒有找到解決方案 –

+0

你是對的,因爲多個set-cookie頭文件可以使用:https://github.com/varnish/libvmod-header – matiasrege

+0

是啊,vmod_header正是我所需要的......謝謝。 –