奇怪的Cookie头部行为? - Cookies

4 投票
2 回答
831 浏览
提问于 2025-04-16 01:47

我正在使用Firefox 3.6.8进行这些测试。

我在我的网页应用的响应头中设置了一个cookie,使用的是:

Set-Cookie: session=7878dfdsfjsdf89sd89f8df9

但是这个设置似乎并没有覆盖会话cookie。


当发起请求时,Firefox甚至会发送重复的cookie

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

这是怎么回事呢? 如果有人能给点建议就太好了!!=)


在我的情况下,这真是个大麻烦……如果有人能解释一下发生了什么,我会非常感激!

2 个回答

3

你可以通过 response 对象来删除之前的 cookie。

response.delete_cookie(cookie_key)

一组 cookie 可以通过 request 对象中的 request.COOKIES 字典来获取,你可以从中找到对应的键。

既然你在使用 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
6

如果你在设置一个cookie的时候没有指定路径或域名,它默认会使用当前的路径和主机名。也就是说,如果你在一个不同的路径或主机名的URL上尝试设置同样名字的cookie,它会添加一个新的cookie,而不是替换掉旧的那个。

我猜你想做的就是为你的网站和整个域名设置一个全局的cookie路径。所以可以这样做:

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

撰写回答