相关疑难解决方法(0)

如何禁用Django的CSRF验证?

我已经注释掉了csrf处理器和中间件行settings.py:

122 
123 TEMPLATE_CONTEXT_PROCESSORS = (
124     'django.contrib.auth.context_processors.auth',
125 #    'django.core.context_processors.csrf',
126     'django.core.context_processors.request',
127     'django.core.context_processors.static',
128     'cyathea.processors.static',
129 )
130 
131 MIDDLEWARE_CLASSES = (
132     'django.middleware.common.CommonMiddleware',
133     'django.contrib.sessions.middleware.SessionMiddleware',
134 #    'django.middleware.csrf.CsrfViewMiddleware',
135     'django.contrib.auth.middleware.AuthenticationMiddleware',
136     'django.contrib.messages.middleware.MessageMiddleware',
137     'django.middleware.locale.LocaleMiddleware',
138     # Uncomment the next line for simple clickjacking protection:
139     # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
140 )
Run Code Online (Sandbox Code Playgroud)

但是当我使用Ajax发送请求时,Django仍然会响应'csrf令牌不正确或丢失',并且在将X-CSRFToken添加到头文件后,请求将成功.

这里发生了什么 ?

python django

96
推荐指数
8
解决办法
9万
查看次数

禁止 (403) CSRF 验证失败。请求被中止。失败原因:来源检查失败与任何可信来源不匹配

帮助

\n

失败原因给出:

\n
Origin checking failed - https://praktikum6.jhoncena.repl.co does not match any trusted origins.\n
Run Code Online (Sandbox Code Playgroud)\n

一般来说,当存在真正的跨站请求伪造时,或者当 Django\xe2\x80\x99s CSRF 机制未正确使用时,就会发生这种情况。对于 POST 表单,您需要确保:

\n
Your browser is accepting cookies.\nThe view function passes a request to the template\xe2\x80\x99s render method.\nIn the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.\nIf you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those …
Run Code Online (Sandbox Code Playgroud)

python django csrf django-csrf python-3.x

80
推荐指数
3
解决办法
9万
查看次数

django 管理面板在服务器上部署禁止 (403) CSRF 验证失败。请求已中止

我正在学习使用 Django、Django REST Framework 和 Docker 进行测试驱动开发课程(Michael Herman)。我的问题是,在本地运行的容器中,管理面板打开没有问题,但放置在heroku上的容器给出错误(Forbidden (403) CSRF验证失败。请求中止。)..在哪里查看?谢谢!

django heroku docker

11
推荐指数
1
解决办法
4937
查看次数

管理面板的 Django CSRF 验证失败

我用一个应用程序、一个模型和一个管理面板开始了一个新的 Django 1.11 项目。在本地,一切正常。当我将它部署到 Amazon EC2 并尝试登录到管理面板时,我收到 403(CSRF 验证失败。请求中止。)。我在调试日志中看到了这一点:

[WARNING] 2017-05-21 11:23:52,142 csrf 14263 140377210439424 Forbidden (Referer checking failed - Referer is insecure while host is secure.): /admin/login/

我使用 Chrome 的网络实用程序检查了请求,我注意到在我的请求标头中我有:

Cookie:csrftoken=hFhzOJPMOhkNWWWfRtlMOEum9jXV8XXWnOtw3OwZm2En9JUqYRVq632xyZfwSpzU

在我的表单数据中,我有:

csrfmiddlewaretoken:RHNpPfOHhg42FZnXmn9PZgNm3bN40C41XQZm4kvUP1oCSMl8tLJthFlxsR5FK4GZ

这两个应该是一样的吧?根据我的理解,它们确实如此,但是当我在本地环境中尝试相同的方法时,我发现它们也不相同,但是在那里工作正常,并且我在响应标头中获得了与请求中发送的相同的令牌标题,所以我认为它们不需要完全相同?注意:我目前没有安全连接 (https),​​但会在修复此问题后进行处理。

我已经尝试/检查了以下内容:

我在 SO 上找到的其他答案提到您需要在表单本身中做一些事情,但这是来自 Django 框架的表单。

附加信息

我的 nginx 配置来自/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events …
Run Code Online (Sandbox Code Playgroud)

django csrf amazon-ec2 django-csrf

7
推荐指数
1
解决办法
2364
查看次数

Django 管理员登录返回 Forbidden 403 CSRF 验证失败。请求已中止

对 Django 来说还很陌生。按照 Django 网站上的民意调查教程完成第二个项目。之前的努力虽然简单,但进展顺利。这次访问管理员登录时遇到问题。

我已经创建了一个超级用户并使用这些凭据,当我尝试登录时http://127.0.0.1:8000/admin/login/?next=/admin/出现以下错误:

Forbidden (403)
CSRF verification failed. Request aborted.
Reason given for failure:
    CSRF cookie not set.
Run Code Online (Sandbox Code Playgroud)

看看这个这个,大多数答案要么详细说明清除浏览器cookie(这样做),包括'django.middleware.csrf.CsrfViewMiddleware'在您的中间件中(我这样做),要么创建豁免或解决方法。

1)我的问题是为什么管理门户现在似乎不起作用,但它对我之前的项目起作用并且我正在遵循相同的步骤?

2)管理面板的属性不应该通过项目启动继承吗?

3)当文档显示默认激活CSRF中间件时,我该如何为admin设置CSRF ?

谢谢你的帮助。

设置.py

"""
Django settings for aptly project.

Generated by 'django-admin startproject' using Django 1.9.7.

For more information on this file, see
https://docs.djangoproject.com/en/1.9/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.9/ref/settings/
"""

import os
import dj_database_url

from .secret_settings import *

# Build …
Run Code Online (Sandbox Code Playgroud)

python django

4
推荐指数
2
解决办法
1万
查看次数

Django - 登录 - 禁止(CSRF 令牌丢失或不正确。):

Forbidden (CSRF token missing or incorrect.)当我尝试使用登录页面时收到错误。

场景如下:

  1. 用户打开了两个选项卡。
  2. 两个选项卡都是登录页面。
  3. 在选项卡 1 中,用户成功登录,并被重定向到需要登录的新页面。
  4. 在选项卡2中,用户尚未刷新页面,仍处于登录页面。在Django后端,用户已经通过身份验证,但前端模板还没有注意到它。
  5. 在选项卡 2 中,当我单击登录按钮时,出现Forbidden (CSRF token missing or incorrect.)错误。
  6. 我确定这csrf_token是在表格中。
  7. 仅当我使用两个选项卡时才会出现此错误。
  8. 我正在使用 AJAX

为什么会发生这种情况?我该如何修复它?

我不知道这会有帮助,但这是我的views.py登录信息

class Login_View(LoginView):

    template_name = 'login.html'

    def post(self, request, *args, **kwargs):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)

        response_data = {}
        if user is not None:
            if user.is_active:
                login(request, user)
                response_data['result'] = 'success'
            else:
                return HttpResponse("Inactive user.")
        else:
            response_data['result'] = 'fail'

        return HttpResponse(json.dumps(response_data), content_type="application/json")
Run Code Online (Sandbox Code Playgroud)

django ajax csrf django-csrf csrf-protection

0
推荐指数
1
解决办法
1万
查看次数