无法在Django中从另一个(父)域获取cookie
我需要删除一个之前在父域名上设置的cookie,而我现在是在父域名的子域名上浏览。
也就是说,一个名为“xyz”的cookie是在example.com上设置的,而我现在想在subdomain.example.com上将它删除,使用的是Django后台。
在视图中给出的request.COOKIES只包含来自subdomain.example.com的cookie,所以我不能直接用response.delete_cookie(...)来删除它。
请问可以用Python或JavaScript来实现这样的删除吗?
2 个回答
0
你可以尝试调用 delete_cookie
来删除一个你无法读取的 cookie。Django 会自动输出相关的 Set-Cookie
头信息来删除这个 cookie。不过,你传给 delete_cookie
的 domain
和 path
必须和你想删除的 cookie 一致。
但是,如果你无法读取这个 cookie,很可能是因为有其他问题,这可能会阻止你删除它。你确定父域名的 cookie 是用 domain=parentdomain.tld
参数设置的吗?如果不是,那么在子域名下就看不到这个 cookie,也无法删除它,除了在 IE 浏览器中,因为这个浏览器对没有指定域名的 cookie 处理得不好。
1
这个cookie可能是通过'domain'参数设置的。这样设置后,cookie就可以在这个域名的所有子域名中使用。
我不是专门做Python的,但我对HTTP协议的了解告诉我,这可能就是问题所在。