奇怪的Cookie头部行为? - Cookies
我正在使用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