gpt4 book ai didi

django cookie 中没有 csrftoken

转载 作者:行者123 更新时间:2023-12-03 22:33:23 25 4
gpt4 key购买 nike

我正在测试发出 POST ajax 请求,但由于没有 csrftoken,我收到了 403。我跟着文档,但是,它仍然不起作用,我发现名为 csrftoken 的 cookie 是 , 意思是 $.cookie("csrftoken") 返回空 .

谁能告诉我原因以及如何设置csrftoken变成 cookies ?

最佳答案

我认为您应该提供如何在 HTML/JS 代码和中间件设置中获取 csrf token 的代码。

首先,您应该检查 django.middleware.csrf.CsrfViewMiddleware已开启。

我有一个类似的问题,当我在 python 代码中使用时 request.META.get('CSRF_COOKIE')获取 token 。

当您在模板中使用此 token 时 - {% csrf_token %} Django 注意到 token 被渲染并在 CsrfViewMiddleware.process_response 中设置了 Cookie。 .如果您以其他方式获取 token 值,Django 将错过此标志。所以它会为你生成一个 token ,但不会设置相应的 cookie。

我在代码中有 2 个解决方法。您应该将它添加到用于使用 JS 代码生成模板的 View 中。

1. 您可以强制 Django 设置 CSRF Coo​​kie:

# Force updating CSRF cookie
request.META["CSRF_COOKIE_USED"] = True

2. 如果您调用 get_token,Django 会自动设置 CSRF_COOKIE_USED
from django.middleware.csrf import get_token
# don't use direct access to request.META.get('CSRF_COOKIE')
# in this case django will NOT send a CSRF cookie. Use get_token function
csrf_token = get_token(request)

这些解决方案中的每一个都应该单独工作。我建议使用 get_token

关于django cookie 中没有 csrftoken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13412653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com