自学内容网 自学内容网

CSRF 令牌

CSRF(跨站请求伪造保护)令牌是一种安全机制,用于防止跨站请求伪造攻击。在 Django 应用中,CSRF 令牌通常用于验证请求是否由您的网站发出,以确保请求是合法的。

在 Django 中,CSRF 令牌通常通过 {% csrf_token %} 模板标签在 HTML 模板中生成。在发送 AJAX 请求时,您需要从这个标签获取 CSRF 令牌,并将其包含在请求头中。

 在 HTML 模板中包含 CSRF 令牌

在 Django 模板中,确保在表单或 AJAX 请求发送前包含 CSRF 令牌:

<form method="post">
  {% csrf_token %}
  <!-- 表单内容 -->
</form>

在 Vue 组件中获取 CSRF 令牌

在 Vue 组件中,您可以使用 JavaScript 来获取 CSRF 令牌:

// 在 Vue 组件中
const csrfToken = document.querySelector('[name="csrf-token"]').getAttribute('content');

在 AJAX 请求中包含 CSRF 令牌

在发送 AJAX 请求时,将 CSRF 令牌包含在请求头中:

axios.post('/api/endpoint/', {
  // 请求体内容
}, {
  headers: {
    'Content-Type': 'application/json',
    'X-CSRFToken': csrfToken
  }
})
.then(response => {
  // 处理响应
})
.catch(error => {
  // 处理错误
});

确保 CSRF 令牌正确传递

确保 CSRF 令牌在每个 AJAX 请求中正确传递,这有助于防止 CSRF 攻击,确保请求的安全性。

###5. 使用 Django REST framework

如果您使用的是 Django REST framework,您可以使用 rest_framework.authtoken 来处理 CSRF 令牌:

# views.py
from rest_framework.views import APIView
from rest_framework.authtoken.views import ObtainAuthToken

class MyView(APIView):
    # 视图逻辑
    pass
# urls.py
# urls.py
from django.urls import path
from .views import MyView

urlpatterns = [
    path('api/endpoint/', MyView.as_view),
    path('api/auth-token/', ObtainAuthToken.as_view()),
]

在前端,可以使用 axiosauth 配置来自动处理 CSRF 令牌:

axios.defaults.xs.headers.common['X-CSRFToken'] = document.querySelector('[name="csrf-token"].getAttribute('content');


原文地址:https://blog.csdn.net/weixin_52394366/article/details/143663835

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!