当前位置: 首页 > 面试题库 >

CSRF令牌丢失或不正确

计阳泽
2023-03-14
问题内容

在这里是Django的初学者,我已经尝试了很长时间了。我的中间件类中确实有“ django.middleware.csrf.CsrfViewMiddleware”,并且我的帖子中确实有令牌。

这是我的代码,我在做什么错?

from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from chartsey.authentication.forms import RegistrationForm
from django.template import RequestContext
from django.core.context_processors import csrf

def register(request):

    if request.method == 'POST':
        c = RequestContext(request.POST, {})
        form = RegistrationForm(c)
        if form.is_valid():
            new_user = form.save()
            return HttpResponseRedirect("/")
    else:
        form = RegistrationForm()

    return render_to_response("register.html",  {'form': form,  }, )

这是我的模板:

{% block content %}

    <h1>Register</h1>
    <form action="" method="POST"> {% csrf_token %}
        {{ form.as_p }}
    <input type="submit" value="Submit">
    </form>

{% endblock %}

问题答案:

你应该使用自动使用的render快捷功能return render(request, 'template.html'),RequestContext

  1. 使用renderhttps://docs.djangoproject.com/en/2.2/topics/http/shortcuts/
  2. 添加CSRF中间件https://docs.djangoproject.com/en/2.2/ref/csrf/
  3. 使用{% csrf_token %}模板标签
  4. 确认你看到正在生成CSRF令牌值,并在表单请求中提交了该值


 类似资料:
  • 问题内容: 我正在使用Django 1.7和django-rest-framework。 我制作了一个API,该API返回了一些JSON数据,并将其放入了我的 settings.py 当我进行GET调用时,它将返回我所有的数据,但是当我尝试使用PUT / PATCH时,我得到: 仅当我登录时才会发生这种情况,如果我是匿名用户,则可以正确进行PUT / PATCH。 我尝试过,但遇到错误,我将设置包

  • 问题内容: 我有Django的1.3版。我尝试按照其他人的问题指定localhost:8000,但这对我不起作用。我正在尝试使用文件上传表单,但是我收到一个错误,即form.py没有CSRF令牌。 form.py: views.py: upload.html: 我很沮丧,请告诉我一些尝试的方法。谢谢 问题答案: 你需要传递 为此:(views.py) 这会将csrf的令牌传递到模板。

  • 问题内容: 我尝试发布参数像 但是, 我正在使用Django返回,找不到在不影响安全性的情况下如何防止此问题。 问题答案: 你可以通过两种不同的方式发出AJAX发布请求: 告诉你的视图不要检查csrf令牌。这可以通过使用decorator来完成,如下所示: 要将csrf令牌嵌入每个AJAX请求中,对于jQuery,它可能是: 该getCookie函数从cookie检索csrf令牌的位置。我使用以下

  • 问题内容: 希望有人向我展示如何使用Django REST框架使用JSON发出简单的POST请求。我在本教程中的任何地方都看不到任何示例吗? 这是我要发布的角色模型对象。这是一个全新的角色,我想添加到数据库中,但出现500错误。 这是我在bash终端提示符下的curl请求: 网址 DOES可以处理GET请求,并且我可以下拉数据库中的所有角色,但是似乎无法创建任何新的Roles。我没有权限设置。我在

  • 我有一个Spring Boot 1.5.12应用程序,默认情况下会启用CSRF保护。我在提交POST请求时使用CSRF令牌。 但是,有些URL需要通过GET请求获取,带有cookie信息,但不需要CSRF令牌,即。 我如何强制我的Spring Boot应用程序也需要CSRF令牌来处理这样的请求? PS:我有一些关于GET请求不需要CSRF保护的意见。但是,它也应该受到保护:https://www.

  • 我已经用html登录表单记录了基本的Apache Jmeter场景,它使用csrf令牌。 应用程序记录的示例令牌如下所示: 到目前为止,我不能得到什么是错误的,非常简单的场景,但有一个问题。我使用的是apache JMeter3.1。