Django 学习笔记-15 使用 AJAX 请求时如何启用 Django 的 CSRF 保护机制

时间:2021-7-4 作者:qvyue
Django 学习笔记-15 使用 AJAX 请求时如何启用 Django 的 CSRF 保护机制

Django 的 CSRF 中间件是一个用来防止 CSRF 攻击的功能。一般情况下,启用这个功能很简单,只需要遵循以下步骤即可:

  • 确保在项目的 settings.py 文件中,中间件的列表中包含了 'django.middleware.csrf.CsrfViewMiddleware'
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  • 使用 POST 方法的表单,如果请求的 URL 是项目内部的 URL,那就要在模板中,加上 {% csrf_token %} 标签:

    {% csrf_token %}

如果请求的 URL 是外部的 URL,那就不能添加这个标签,如果添加了的话就会泄露 CSRF 令牌。

  • 在视图函数中,要确保使用 RequestContext 来返回相应内容,这样{% csrf_token %} 才能生效。render() 函数、通用视图、contrib app 都是使用 RequestContext 的。

但是如果要在使用 AJAX 请求时启用 Django 的 CSRF 保护机制,还需要做一些额外的操作。

1. 总体思路

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。