gpt4 book ai didi

csrf - Tastypie csrftoken 未设置为隐身模式

转载 作者:行者123 更新时间:2023-12-04 04:43:31 24 4
gpt4 key购买 nike

我使用 ajax 调用对 CRUD(使用 csrf token )的薄美味层。一切都像魅力一样,直到我运行该网站,例如Chrome 隐身模式。我不断收到 CUD 请求的 401。

查看请求 cookie,我发现 sessionid cookie 已设置,但 csrftoken cookie 未设置(如果我在正常模式下运行,则正确设置)。

在我的 settings.py我有:

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)

任何人都遇到过这个问题,可以在这里为我节省一些时间吗?

非常感谢,
于尔根

最佳答案

我在Django的中间件文件csrf.py中找到了没有设置cookie的原因.下面的代码if在隐身模式下启动,阻止设置 cookie:

    if not request.META.get("CSRF_COOKIE_USED", False):
return response

我的解决方法是在tastypie 的 api.py 中为我的ModelResources 设置这个值。手动归档:
class MyModelResource( ModelResource ) :

[..]

def wrap_view(self, view):
def wrapper(request, *args, **kwargs):
request.META["CSRF_COOKIE_USED"] = True
wrapped_view = super(MyModelResource, self).wrap_view(view)
return wrapped_view(request, *args, **kwargs)
return wrapper

关于csrf - Tastypie csrftoken 未设置为隐身模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557196/

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