【问题标题】:Django request.COOKIES returning empty dictionaryDjango request.COOKIES 返回空字典
【发布时间】:2017-08-01 06:57:17
【问题描述】:

我使用 javascript document.cookie = ... 设置了一些 cookie,然后尝试使用 request.COOKIES 在 Django (1.8) 视图中检索它们。但是,当我将结果打印到控制台时,它只是一个空字典。

我几周前编写了这段代码,我很确定它当时可以工作,但现在我又回到它坏了。 Cookie 在浏览器控制台的应用程序窗口中可见,我可以使用 Javascript 检索它们,而不是 Django。

我已阅读文档并尝试更改我的设置,但看不出有什么影响。任何关于我下一步应该看哪里的建议将不胜感激。

我没有提供任何代码,因为我不知道问题出在哪里,而且我的应用程序也不小。只是寻找一种途径来探索为什么 request.COOKIES 没有返回任何内容。

谢谢

编辑 2: 这只发生在 Chrome 上。 Safari 正在按预期返回 cookie。

编辑 1: 用于设置 cookie 的 JavaScript 函数:

function setcookie(cookieName,cookieValue) {
    var today = new Date();
    var expire = new Date();
    expire.setTime(today.getTime() + 3600000*24*14);
    document.cookie = cookieName + "=" + cookieValue + ";expires="+expire.toGMTString() + "; path=/";
}

这样实现的:

setcookie('areaMain', 'map)

标签中的 Cookie:

https://i.stack.imgur.com/rP3me.png

然后尝试在视图中查看它们:

def index(request):
    cookies = request.COOKIES
    print(cookies)

返回{}

【问题讨论】:

  • 您的前后端口是否相同?您可以在问题中添加更多代码吗?
  • 我没有在任何地方更改端口,所以如果默认情况下它们相同,我认为它们是相同的。我的页面正在渲染,但我无法检索 cookie。

标签: python django cookies django-views


【解决方案1】:

你能在你的视图中添加这样的代码吗:

def view(request):
    response = HttpResponse("hello")
    response.set_cookie('name', 'jujule')
    return response

看看有没有新的cookie设置?

【讨论】:

  • 是的,cookie 已设置。但是,如果我尝试通过再次设置 print(request.COOKIES) 来打印它,我会再次得到一个空字典......
  • 我会在我的本地机器上尝试一些案例,然后明天给你写信。
  • 你好@BrownBear,我知道这个问题是4年前的。但是我遇到了完全相同的问题,我无法发现发生了什么。你知道什么可能导致resquest.COOKIES 返回一个空对象吗?我正在尝试在我的项目中设置 Google Optimize,我需要由 Google 设置一个 cookie 来有条件地渲染视图,但在第一次加载时,我总是得到一个空的 cookie 对象。
  • 如果您在第一次打开页面时通过javascript设置cookie,由于cookie暂时不存在,后端无法看到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2013-11-30
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多