2010-07-24 55 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