2010-07-24 33 views
4

我使用Firefox 3.6.8進行這些測試。奇怪的Cookie頭行爲? - Cookies

我設置一個cookie使用的響應頭我的web應用程序的內:

Set-Cookie: session=7878dfdsfjsdf89sd89f8df9 

似乎並不覆蓋會話cookie。


當執行一個請求,而不是火狐甚至發送重複餅乾

Cookie: session=7d75cd8f55895cbccb0d31ee07c7afc0; 
     session=671e8448a5cebda0442005a186cf69a3; 
     4cb6f2d75c9ffc8916cb55bcbaafecd8 

這是怎麼回事? 任何想法都會很棒! =)


這是在我的情況相當災難性的......如果有人能解釋這是怎麼回事這將真正幫助我!

回答

5

如果設置它的時候,它默認爲不指定一個cookie路徑或域當前路徑和當前主機名。如果您繼續嘗試從具有不同路徑或主機名的URL設置相同的cookie名稱,它將添加新的cookie而不是替換舊的cookie。

我懷疑你想要做的只是爲你的網站和整個域設置一個全局路徑的cookie。所以像這樣的事情:

Set-Cookie: session=7878dfdsfjsdf89sd89f8df9; path=/; domain=.mysite.com 
+0

我想你已經解決了我的問題......我真的會瘋狂= D – RadiantHex 2010-07-25 18:40:21

+0

我可以設置Cookie來覆蓋所有路徑嗎? – RadiantHex 2010-07-25 18:40:49

+0

我愛你!!!!!! :3 – RadiantHex 2010-07-25 18:43:12

3

您可以使用response對象刪除以前的cookie。

response.delete_cookie(cookie_key) 

的一系列Cookie是通過在request.COOKIES字典request對象可用,您可以從那裏獲得的關鍵。

由於您使用的Django,這裏是你如何可以在視圖功能做到這一點:

def my_view(request): 
    # do some work and create a response object 
    response = HttpResponse(some_content) 

    # first delete any previously set cookie named "session" 
    if 'session' in request.COOKIES: 
     response.delete_cookie('session') 

    # set the new cookie 
    response.set_cookie('session', <cookie value goes here>') 
    return response 
+0

謝謝,我怎麼得到一個HTTP服務器來取代Cookie?當Web應用程序上線時,我無法控制用戶的機器。 – RadiantHex 2010-07-24 22:38:39

+0

btw我通過Django手動發送'Set-Cookie',但Firefox不會替代舊的Cookie,無論如何... – RadiantHex 2010-07-24 22:39:55

+0

這將使我的頭髮灰色時間=) – RadiantHex 2010-07-24 22:42:53