无法在Django中从另一个(父)域获取cookie

1 投票
2 回答
2163 浏览
提问于 2025-04-15 17:53

我需要删除一个之前在父域名上设置的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_cookiedomainpath 必须和你想删除的 cookie 一致。

但是,如果你无法读取这个 cookie,很可能是因为有其他问题,这可能会阻止你删除它。你确定父域名的 cookie 是用 domain=parentdomain.tld 参数设置的吗?如果不是,那么在子域名下就看不到这个 cookie,也无法删除它,除了在 IE 浏览器中,因为这个浏览器对没有指定域名的 cookie 处理得不好。

1

这个cookie可能是通过'domain'参数设置的。这样设置后,cookie就可以在这个域名的所有子域名中使用。

我不是专门做Python的,但我对HTTP协议的了解告诉我,这可能就是问题所在。

撰写回答