栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有Django的CSRF,使用Axios的React + Redux

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有Django的CSRF,使用Axios的React + Redux

有三种方法。你可以在每个axios调用的标题中手动添加令牌,可

以xsrfHeaderName
在每个调用中设置axios的令牌,或者设置
default xsrfHeaderName

1.手动添加
假设你已将令牌的值存储在名为的变量中csrfToken。在axios调用中设置标题:

// ...method: 'post',url: '/api/data',data: {...},headers: {"X-CSRFToken": csrfToken},// ...
  1. xsrfHeaderName在通话中设置:
  2. 添加此:
// ...method: 'post',url: '/api/data',data: {...},xsrfHeaderName: "X-CSRFToken",// ...

然后在settings.py文件中添加以下行:

CSRF_cookie_NAME = "XSRF-TOKEN"

3.设置默认标题[1]
你可以为axios设置默认标题,而不是在每个调用中定义标题。

在导入axios进行呼叫的文件中,将其添加到你的导入下方:

axios.defaults.xsrfHeaderName = "X-CSRFToken";

然后在

settings.py
文件中添加以下行:

CSRF_cookie_NAME = "XSRF-TOKEN"
axios.defaults.withCredentials = true

问题:下一节对任何人有用吗?我想知道是否可以仅通过包含解决方案来改善此答案。如果你有意见,请告诉我。

混乱:

Django文档

首先,James Evans 引用的Django文档的整个段落:

…在每个XMLHttpRequest上,将自定义X-CSRFToken标头设置为CSRF令牌的值。这通常更容易,因为许多Javascript框架都提供了允许在每个请求上设置标头的钩子。

第一步,你必须获取CSRF令牌本身。令牌的推荐来源是csrftoken cookie,如果你如上所述为视图启用了CSRF保护,则将设置该cookie。

注意

默认情况下,CSRF令牌cookie的名称为csrftoken,但是你可以通过CSRF_cookie_NAME设置控制cookie的名称。

默认情况下,CSRF标头名称为HTTP_X_CSRFTOKEN,但你可以使用CSRF_HEADER_NAME设置对其进行自定义。

Axios文件

这是来自Axios文档。它表示你csrftoken在此处设置了包含的cookie 的名称以及标头的名称:

  // `xsrfcookieName` is the name of the cookie to use as a value for xsrf token  xsrfcookieName: 'XSRF-TOKEN', // default  // `xsrfHeaderName` is the name of the http header that carries the xsrf token value  xsrfHeaderName: 'X-XSRF-TOKEN', // default


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号