使用REST API时,如何在标头中获取并包含CSRF令牌

时间:2017-06-03 11:05:43

标签: django rest reactjs axios

我正在使用python Django来创建REST API。客户端是在反应中开发的,并且是作为一个独立的应用程序开发的。我是用于触发http请求的axios.I nedd传递CSRF令牌对于每个帖子请求,但无法从浏览器获取CSRF令牌。

1 个答案:

答案 0 :(得分:0)

如何在执行Ajax请求时传递CSRF?

首先,确保您的设置文件中的中间件列表中包含django.middleware.csrf.CsrfViewMiddleware。此中间件在cookie中设置CSRF_TOKEN,以便您可以为ajax请求检索它。

其次,Django现在可以在会话中存储CSRF。但是,在您的特定情况下,您不希望会话中有CSRF_TOKEN。确保在CSR中包含CSRF的CSRF_USE_SESSIONS = False(这是默认值)。

如果你检查了cookies,你现在应该有一个CSRF_TOKEN。如果您使用带有以下代码的jquery,则可以将其动态添加到ajax请求中。

https://docs.djangoproject.com/en/1.11/ref/csrf/#setting-the-token-on-the-ajax-request

我说如果您使用Jquery,因为您使用的是React,它不需要Jquery来执行Ajax请求,这取决于您如何执行它们。