django - 如何在 axios POST 请求中附加 csrf header 和值

标签 django csrf

当用户使用提供的表格注册时,我需要发送 CSRF token 。

但是,由于注册/登录将是第一次与 django REST API 交互,所以我在加载网页时创建一个虚拟 GET 请求以从 django 检索 CSRF token 。

token 被检索并存储在 cookie 中。

enter image description here

但是,我仍然从 django 得到 Forbidden (CSRF cookie not set.)

这是我的 axios POST 请求。

import axios from 'axios'
axios.defaults.xsrfCookieName = 'vcubes'
axios.defaults.xsrfHeaderName = 'X-CSRFToken'

let req = {
    url: 'http://localhost:9000/vcubes/signup/',
    method : 'POST',
    headers: {
        'Content-Type': 'text/plain'
    },
    data: data
}

注意:

当我将 withCredentials: true 添加到 axios POST 的 header 中时,浏览器发送 OPTIONS 请求而不是 POST。

最佳答案

  let csrftoken = Vue.$cookies.get('vcubes')

  return axios.post('', data, {
    headers: {
      'X-CSRFToken': csrftoken
    }
  }).then(response => {
    return response.data
  })

这与 Shane 的回答非常相似,但展示了如何在 Vue 中获取 csrf token 。如果您的问题是获取 cookie,那么 this所以答案应该对你有帮助。

关于django - 如何在 axios POST 请求中附加 csrf header 和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46997888/

相关文章:

node.js - KrakenJS : perform POST request over a controller ends with error

angularjs - 如何实现跨域请求的csrf保护

jquery - 使用带有 ajax Rest 调用的 Spring CSRF 和带有 Thymeleaf 的 HTML 页面

Django + DRF : 403 FORBIDDEN: CSRF token missing or incorrect

Django新手ManyToManyField模板问题

django - 使用 django-storages 上传静态文件时有选择地应用 AWS header

django - 将现有 django 应用程序与 django-cms 集成

python - 在 Heroku 上使用 Django 将大文件上传到 AWS S3 Bucket 没有 30 秒的请求超时

django - 在 get_queryset 中过滤时重置 MultipleObjectMixin 分页

javascript - 为什么使用 POST 方法可以防止 json 劫持?