标签: django-csrf

为什么Django admin登录给我403 CSRF错误?

我正在运行Django 1.2.2,当我尝试登录Django管理员时出现以下错误:

禁止(403)CSRF验证失败.请求中止.

失败的原因:

没有CSRF或会话cookie.

**我没有对准系统管理员进行任何定制,当我检查源时,表格中有一个CSRF令牌,我认为是正确的位置.

当我查看正在发送的实际请求时,会发送一个csrf令牌,但Django仍然说CSRF验证失败.

谁能指出我正确的方向?为什么会这样?

python django csrf django-csrf

8
推荐指数
2
解决办法
9542
查看次数

Django 1.2.4 CSRF验证失败

当我执行POST表单时,Django 1.2一直给我这个CSRF验证错误.我"想"我已经完成了Django 1.2文档中提到的所有事情,即

  1. 确保MIDDLEWARE_CLASSES包含在'django.middleware.csrf.CsrfViewMiddleware'中

  2. 确保{%csrf_token%}

    <form action="/words/new/" method="post">
    {% csrf_token %}
    {{ form.as_p }}
        <input type="submit" value="Enter" />
    </form>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在我的回复中使用RequestContext

    def create(request):
        if request.method == 'POST':
            form = DefinitionForm(request.POST)
            if form.is_valid():
                form.save()
            c = {}
            return render_to_response('dict/thanks.html',c, 
                                        context_instance=RequestContext(request))
        else:
            form = DefinitionForm()
        return render_to_response('dict/create_definition.html', {
            'form' : form,
        })
    
    Run Code Online (Sandbox Code Playgroud)

请注意,GET操作适用于此功能.所以我认为我正在使用render_to_response.

我甚至试图投入@csrf_protect装饰器,甚至那似乎没有用.我没有想法,我准备用笔记本电脑掐自己.

你们能想到的任何事情?

谢谢!

django csrf django-csrf csrf-protection

8
推荐指数
1
解决办法
995
查看次数

CSRF验证不适用于使用HTTPS的Django

我正在开发一个应用程序,前端是一个AngularJS API,它向Django Rest Framework中开发的后端API发出请求.

The frontend is on the domain: https://front.bluemix.net
And my backend is on the domain: https://back.bluemix.net
Run Code Online (Sandbox Code Playgroud)

我在从前端API向后端API发出请求时遇到问题.错误是这样的:

Error: CSRF Failed: Referer checking failed - https://front.bluemix.net does not match any trusted origins.
Run Code Online (Sandbox Code Playgroud)

我正在使用CORS,我已经在Django后端API的settings.py中包含以下行:

ALLOWED_HOSTS = []

CORS_ALLOW_CREDENTIALS = True

CORS_ORIGIN_ALLOW_ALL = True

CORS_ALLOW_CREDENTIALS = True


CSRF_TRUSTED_ORIGINS = ['https://front.bluemix.net/']

CORS_REPLACE_HTTPS_REFERER = True

CSRF_COOKIE_DOMAIN = 'bluemix.net'

CORS_ORIGIN_WHITELIST = (
    'https://front.bluemix.net/',
    'front.bluemix.net',
    'bluemix.net',
)
Run Code Online (Sandbox Code Playgroud)

谁知道如何解决这个问题?

django django-csrf cors django-rest-framework ibm-cloud

8
推荐指数
6
解决办法
7109
查看次数

Django @csrf_exempt在类视图中不起作用

我在Django 1.9中有一个使用SessionMiddleware的应用程序。我想在同一项目中为此应用程序创建一个API,但是在执行POST请求时,它不起作用@csrf_exempt批注。

我正在处理引发Postman的请求,这是我到目前为止的结果:

settings.py

MIDDLEWARE_CLASSES = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'a9.utils.middleware.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'a9.core.access.middleware.AccessMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',    
]

OAUTH2_PROVIDER = {
    # this is the list of available scopes
    'SCOPES': {'read': 'Read scope', 'write': 'Write scope', 'groups': 'Access to your groups'}
}

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)
CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` …
Run Code Online (Sandbox Code Playgroud)

django django-csrf python-3.x django-rest-framework

8
推荐指数
3
解决办法
5322
查看次数

CSRF - 使用 Django 后端从 chrome 扩展执行 ajax 请求时的引用

我正在使用最新版本的 Django 和 Django Rest Framework。我的 Web 应用程序提供了一个当前仅由前端使用的 API。

我正在使用相同的 API 路由创建 chrome 扩展。

当我使用本地服务器runserver 命令时,我没有问题。当服务器在 HTTPS 后面运行时,我始终有 403 错误。

{"detail":"CSRF Failed: Referer checking failed - no Referer."}
Run Code Online (Sandbox Code Playgroud)

我使用的视图如下:

@method_decorator(csrf_exempt, name='dispatch')
class ObtainAuthToken(APIView):
    permission_classes = (AllowAny,) #maybe not needed in your case

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

        payload = dict()

        if user is not None:

            token, created = Token.objects.get_or_create(user=user)

            payload['token'] = token.key
            payload ["success"] = True

        else:
            payload['error'] = "Credentials …
Run Code Online (Sandbox Code Playgroud)

django ajax google-chrome-extension django-csrf csrf-protection

8
推荐指数
0
解决办法
630
查看次数

Django CSRF错误:仅在本地runserver上

回购中的相同代码在野外工作正常.但是在我的本地环境中,我在表单提交时遇到了CSRF错误.

Django 1.11.13,Python 2.7

调试非常困难,因为实际上没有任何断点.错误发生在视图之前.

CSRF令牌在表单中{% csrf_token %},隐藏字段在那里,cookie就在那里.

我试过创建一个新的虚拟环境,擦除数据库,不同的浏览器.还有什么?

django django-csrf

8
推荐指数
1
解决办法
191
查看次数

如何在javascript中使用{%csrf_token%}

在我的用户页面中,我使用ajax进行编辑.当我点击编辑时,它工作正常.但是当我提交表格时,它什么也没做.当我检查时,这是错误:

CSRF verification failed. Request aborted.

那么,我如何在我的javascript中放置{%csrf_token%}?请指教.谢谢.

edit.js:

function bookmark_edit() {
    var item = $(this).parent();
    var url = item.find(".title").attr("href");
    item.load("/save/?ajax&url=" + escape(url), null, function () {
        $("#save-form").submit(bookmark_save);
        });
    return false;
    }

$(document).ready(function () {
    $("ul.bookmarks .edit").click(bookmark_edit);
    });

function bookmark_save() {
    var item = $(this).parent();
    var data = {
        url: item.find("#id_url").val(),
        title: item.find("#id_title").val(),
        tags: item.find("#id_tags").val()
        };
    $.post("/save/?ajax", data, function (result) {
        if (result != "failure") {
        item.before($("li", result).get(0));
        item.remove();
        $("ul.bookmarks .edit").click(bookmark_edit);
        }
        else {
            alert("Failed to validate bookmark before saving.");
        } …
Run Code Online (Sandbox Code Playgroud)

javascript django jquery django-forms django-csrf

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

CSRF验证失败 - 当主机安全时,Referer不安全

我将Django从1.8升级到1.9.之后,在Django管理员登录后,我在本地主机上收到此错误:

Referer checking failed - Referer is insecure while host is secure.

生产中的一切都很好.以下是我的settings.py文件的片段:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
Run Code Online (Sandbox Code Playgroud)

django django-csrf django-1.9

7
推荐指数
2
解决办法
3440
查看次数

禁止(CSRF令牌丢失或不正确.):

我正在进行下面的ajax调用:

var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken': '{{ csrf_token }}'};
    $.ajax({
        type: 'POST',
        url:"/issuebook",
        data:data_dict,
        processData: false,
        contentType: false,
        success:function(response)
        {
        }
    });
Run Code Online (Sandbox Code Playgroud)

urls.py是:

urlpatterns = [
url(r'^$',views.checkLogin,name='checklogin'),
url(r'^mylibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.MyLibrary.as_view()),name='mylibrary'),
url(r'^centrallibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.CentralLibrary.as_view()),name='centrallibrary'),
url(r'^issuebook$',login_required(views.IssueBookView.as_view()),name='issuebook'), 
Run Code Online (Sandbox Code Playgroud)

]

我在ajax调用中收到"Forbidden(CSRF令牌丢失或不正确.):/ issuebook"错误.

ajax调用中的csrf标记呈现为:

var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken':'fSSdu8dJ4FO6FvDz8eU5ISzOewRYyGbC'};
                    $.ajax({
                        type: 'POST',
                        url:"/issuebook",
                        data:data_dict,
                        contentType: false,
                        success:function(response)
                        {
                        }
                    });
Run Code Online (Sandbox Code Playgroud)

django django-csrf

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

管理面板的 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
查看次数