当前位置: 首页 > 知识库问答 >
问题:

如何通过CSRF令牌在POST数据到Django?

穆正祥
2023-03-14

我正在开发一个应用程序与Django后端和Next.js前端。我试图使用提取API将数据从前端发布到后端。我有问题传递一个有效的CSRF令牌在我的POST数据到Django。

我试图通过在POST请求中包含一个X-CSRFToken头并使用Django文档中推荐的JavaScript Cookie库获取其值来实现这一点。

这是我的提取请求:

import Cookies from 'js-cookie';

// POST data
fetch('http://127.0.0.1:8000/dictionary/define', {     
  method: 'POST',     
  headers: {'X-CSRFToken': Cookies.get('csrftoken')},     
  body: JSON.stringify(data)})    
.then(response => response.json())   
.then(data => console.log(data))
.catch(error => console.log(error));

我从Django那里得到的错误当然是说没有设置CSRF cookie:

禁止(未设置CSRF cookie):/。。。

有人能告诉我我错过了什么吗?

共有1个答案

张伯寅
2023-03-14

我通过在请求中包含凭据解决了此问题:

import Cookies from 'js-cookie';

// POST data
fetch('http://127.0.0.1:8000/dictionary/define', {     
  method: 'POST',
  credentials: 'include',     
  headers: {'X-CSRFToken': Cookies.get('csrftoken')},     
  body: JSON.stringify(data)})    
.then(response => response.json())   
.then(data => console.log(data))
.catch(error => console.log(error));
 类似资料:
  • 我试图创建一个带有动态预填充字段的Django表单:也就是说,当从下拉菜单中选择一个字段()时,其他字段会自动预填充相应的数据。为此,我希望在选择下拉选项后立即向服务器发送POST请求。 到目前为止,我已经尝试了以下模板(以下https://docs.djangoproject.com/en/2.0/ref/csrf/): 但是,当我选择一个下拉选项时,我会得到一个 新:17未捕获的语法错误:意外

  • 问题内容: 我正在使用Laravel 5应用程序,该应用程序默认为所有POST请求启用CSRF保护。我喜欢这种增加的安全性,因此我正在尝试使用它。 发出简单请求时,我收到一个错误,因为POST数据中缺少所需的表单输入。这是一个有关$ .post请求的示例: 我将CSRF令牌存储为标头中的meta字段,可以使用以下命令轻松访问它: 是否可以在所有传出请求中将其附加到json数据?我尝试使用标头,但L

  • 我正在使用Amazon SNS在我的HTTP/HTTPSendpoint上接收推送消息。endpoint应用程序是用Django编写的。要在endpoint(web app)上接收通知,HTTP/HTTPSendpoint需要订阅一个主题。 我的问题是当Amzaon SNS发送订阅确认时,它如何在POST请求中发送CSRF令牌,以便我处理请求并检索所需信息? 文档:http://docs.aws.

  • 问题内容: 我创建了一个包含很多字段的表单,用户可以在其中创建无限的字段。如果用户将更多时间花在CSRF令牌上,则它将过期,并且当他单击提交LARAVEL时,将返回错误CSRF令牌不匹配。那么,如何使用ajax调用获取新的CSRF令牌,以便可以在固定的时间间隔内更新CSRF?我无法刷新或重新加载表格。 问题答案: 只需将其添加到您的脚本中 并确保已将令牌添加到元标记中,如下所示。 希望这对您有用。

  • 我是按照Spring Blog(https://spring.io/guides/tutorials/spring-security-and-angular-js/)的教程来的。但是我从一个现有的Spring应用程序开始,因此我不使用Spring Boot开始,我必须找到一种方法来实现XML和Java配置混合风格的组件。 这是我的CORS过滤器: 这是我的CsrfHeaderFilter.java

  • 概述 我将使用API网关作为基于Spring Security性的身份验证。我刚刚按照https://spring.io/guides/tutorials/spring-security-and-angular-js/链接中的步骤创建了一个基于其对应的github项目的“对双”模块的项目https://github.com/spring-guides/tut-spring-security-and