gpt4 book ai didi

python - Django 数据库中存储的 csrftoken 在哪里?

转载 作者:太空狗 更新时间:2023-10-30 01:25:48 24 4
gpt4 key购买 nike

csrftoken 存储在哪里?

当我访问 API 端点时(注销 API,它不需要参数):

POST /rest-auth/logout/ HTTP/1.1
Host: 10.10.10.105:8001
Connection: keep-alive
Content-Length: 0
Accept: application/json, text/plain, */*
Origin: http://localhost:8080
Authorization: Token 0fe2977498e51ed12ddc93026b08ab0b1a06a434
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
Referer: http://localhost:8080/register
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: sessionid=b95zopro0qvkrexj8kq6mzo1d3z2hvbl; csrftoken=z53lKL0f7VHkilYS5Ax8FMaQCU2ceouje9OeTJOgTy4gH0UgHVltAlOe2KFNNNB6

标题在上。在响应中我得到一个错误:

{"detail":"CSRF Failed: CSRF token missing or incorrect."}

因此,后端必须验证csrftoken

在后端数据库中,找不到csrftoken字段:

enter image description here

所以我想知道它保存在加密的session_data中的什么位置?

最佳答案

鉴于此 QAdjango 文档中,您可以看到该框架默认使用Double Submit Cookie 方法(而不是同步器 模式)。

这种方法不需要服务器存储 CSRF token ,因为它所做的唯一检查是将 cookie 中的 token 与 header (或参数)中的 token 进行比较,并验证它们是平等的。

另一方面,synhronizer 模式确实将 CSRF token 存储在服务器的某处,并且对于每个请求,它通过将其与另一个请求进行比较来验证其有效性通过 header 发送(或像以前一样,在 POST 参数中发送)。

您可以阅读有关这两种方法的更多信息 here .


我猜您正在使用 Web 服务测试应用程序测试您的 API,在这种情况下,您在请求中的某处缺少第二个标记。

This section解释如何为 AJAX 调用放置 token :

AJAX While the above method can be used for AJAX POST requests, it has some inconveniences: you have to remember to pass the CSRF token in as POST data with every POST request. For this reason, there is an alternative method: on each XMLHttpRequest, set a custom X-CSRFToken header to the value of the CSRF token. This is often easier, because many JavaScript frameworks provide hooks that allow headers to be set on every request.

看到你上面的请求,因此你应该放置这个 header (当然是当前 token 的值):

X-CSRFToken: z53lKL0f7VHkilYS5Ax8FMaQCU2ceouje9OeTJOgTy4gH0UgHVltAlOe2KFNNNB6

关于python - Django 数据库中存储的 csrftoken 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49298250/

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