1

Получение ошибки CSRF Я не могу понять, как исправить, у меня есть отдых аутентификация работает, пользователь может обновить свои данные, как так: enter image description hereДжанго комментарии CSRF ошибки

, но с Django Comments я получаю эту ошибку CSRF с помощью то же CSRF токен Ошибка:

enter image description here

Я хотел бы избавиться от этой ошибки на/комментарии/записи/конечной точки, таким образом, что это конечная точка ведет себя похоже на/отдых-AUTH/пользователь/зрения, которая принимает заголовок «Авторизация: токен 792b5fb27b4fe805e895c91274f26b6ab13cb654» поле для соответствующего предоставления данных аутентифицированному пользователю.

Ниже приводится Exert из CSRF связанных decotaros на соответствующих взглядов, показанных на снимках экрана: С/комментарии/записи/конечной точки

@csrf_protect 
@require_POST 
def post_comment(request, next=None, using=None): 
    # Fill out some initial data fields from an authenticated user, if present 
    data = request.POST.copy() 
    if request.user.is_authenticated(): 
     if not data.get('name', ''): 
      data["name"] = request.user.get_full_name() or request.user.get_username() 
     if not data.get('email', ''): 
      data["email"] = request.user.email 

С/отдых-AUTH/пользователь/конечная точка

@api_view(['GET']) 
@permission_classes((IsAuthenticated,)) 
def get_user(request, **kwargs): 
    pk = request.data['pk'] 

    user = MyUser.objects.get(pk=pk) 
    serializers = UsersSerializer(user) 
    return Response(serializers.data) 

ответ

1

Декораторы для ваших конечных точек различны, поэтому вам необходимо соответствующим образом настроить заголовки. Для вашего/rest-auth/просмотра заголовок WWW-Authenticate требуется как mentioned here.

В представлении комментариев/комментариях/endpoint есть декораторы csrf_protect, что означает, что заголовок должен соответствовать возврату csrf-token, возвращаемому в cookie, так как Fede упоминает в вашем заголовке, вам требуется только «X-CSRFToken» с соответствующим значением из печенье.

2

Вы используете неправильный тип содержимого. Пожалуйста, измените его на application/json и повторите попытку.

+0

Пытался снова с помощью приложения/JSON еще получаю ту же ошибку: https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/s_d20nvj.png – Anon957

+0

Я также попытался переключаясь от реферера и Origin поля, по-прежнему получаю сообщение об ошибке – Anon957

+0

Ok Попробуйте очистить куки или использовать почтальон в инкогнито или smth. Вы также можете попробовать отключить рендереры, оставив только json one. – mariodev

1

Я думаю, вы используете django-rest-framework, который по умолчанию имеет токен csfr, но почтальон отправляет токен csfr, поэтому вы получаете эту ошибку.

Очистка печенья может решить проблему.

+0

Очистка файлов cookie не помогла, попробовала то же самое, используя Paw (другой клиент для REST OSX), получая ту же самую ошибку: https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/fxvtdwrp.png – Anon957

+0

Это то, что/комментарии/post/url указывает на https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/j-m31w9k.png Я - это мой первый проект с использованием этих фреймворков, но похоже, что он использует защиту csrf, не уверен, как это отличается от csfr освобождены. – Anon957

+1

Он использует декоратор csrf_protect (https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#django.views.decorators.csrf.csrf_protect), что означает, что клиенту требуется использовать токен csrf обслуживание. Если вы используете csfr_exempt decorator (https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt), он не будет использовать токен для использования службы, попробуйте добавить декоратор, и он должен работать. CSRF существует по какой-либо причине, вы можете узнать больше об этом в https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#module-django.middleware.csrf –