- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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
字段:
所以我想知道它保存在加密的session_data
中的什么位置?
最佳答案
鉴于此 QA在 django
文档中,您可以看到该框架默认使用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/
我试图找到以下问题的答案。 什么情况下浏览器会存储多个csrftoken cookies ? 它是正确的还是技术上有效的功能? 以及在 RFC/security 文档中传递数组的位置,或尝试 csrf
有没有办法直接在View中获取csrftoken? 我想获取当前的 csrftoken,但有时会发生变化,因此从 Cookies 获取它不是一个好主意。 有什么办法吗? 谢谢! 最佳答案 我相信您正在
我使用 ajax 调用对 CRUD(使用 csrf token )的薄美味层。一切都像魅力一样,直到我运行该网站,例如Chrome 隐身模式。我不断收到 CUD 请求的 401。 查看请求 cooki
我正在测试发出 POST ajax 请求,但由于没有 csrftoken,我收到了 403。我跟着文档,但是,它仍然不起作用,我发现名为 csrftoken 的 cookie 是 空 , 意思是 $.
我在我的 SPA 中遇到了 Django CSRF token 的奇怪问题。 当我呈现我的应用程序时,我确保使用 ensure_csrf_cookie 设置 token 。当我检查我的 cookie
我有一个带有表单元素的 django 模板,其中包括一些输入文本编辑和一个提交按钮以及一个带有 DropzoneJS 的用户头像 uploader 。问题是我无法将 DropzonJs 放入表单的 d
试图了解安全性。好奇为什么在Django何时 提交表单(POST)时,有2个单独的“元素” 包含相同的csrf token 值: - the csrftoken cookie: COOKIE
我正在与 Django 合作创建一个网站,并遇到了一些关于 CSRF 的问题。我用 django.middleware.csrf.CsrfViewMiddleware并添加 {% csrf_token
csrftoken 存储在哪里? 当我访问 API 端点时(注销 API,它不需要参数): POST /rest-auth/logout/ HTTP/1.1 Host: 10.10.10.105:80
如何通过 python 模块 Requests 传递 csrftoken?这就是我所拥有的,但它不起作用,我不确定将它传递给哪个参数(数据、 header 、身份验证...) import reque
在我的 Django 的 settings.py 中,我有 SESSION_COOKIE_HTTPONLY = True SECURE_CONTENT_TYPE_NOSNIFF = True SECU
我有这样的python代码 s=requests.Session() headers = {'User-Agent': 'Mozilla/5.0'} URL = 'http://test.dev/ap
我开发了一个 Django 文件上传 API,它从客户端接收发布的数据并将数据保存为文件。 根据Django CSRF manual ,HTTP 请求 header 应使用 csrftoken coo
我需要通过基于 Ajax 的发布请求传递 CSRFToken,但不确定如何以最佳方式完成。使用在请求中内部检查 CSRFToken 的平台(仅限 POST 请求) 最初我想把它添加到标题中 $(fun
在Vue.js项目中,如何获取csrftoken? 我试过使用js-cookie,但无法获取: import Cookies from 'js-cookie'; if (Cookies.get('cs
我使用 Django rest 框架作为我的后端 (api),并使用 React 作为前端。 现在我想将表单数据 POST 到后端。我想用csrf保护,因为安全。因此,我尝试使用 Django 发送的
我的问题是,上传文件时显示以下错误。我该如何解决这个问题? 这是我在模板中的代码:
使用: Django 3.x [Django-Filters 2.2.0、graphene-django 2.8.0、graphql-relay 2.0.1] Vue 2.x [Vue-Apollo]
当我们必须发送{% csrf_token %}时,django中的csrftoken-cookie有什么用在每个表单提交中。 {% csrf_token %} Submit Django 处理器总
如何在 Axios.interceptors.request 的配置中获取 Cookies 的 csrftoken? Axios.interceptors.request.use( config
我是一名优秀的程序员,十分优秀!