1

Obtenir une erreur csrf Je ne peux pas comprendre comment corriger, j'ai le repos auth travail, l'utilisateur est en mesure de mettre à jour leurs détails comme ceci: enter image description hereDjango commente erreur CSRF

mais avec Django Comments je reçois cette erreur csrf en utilisant le même CSRF jeton erreur:

enter image description here

Je voudrais vous débarrasser de cette erreur sur le/commentaires/post/point final, de sorte que ce point de terminaison se comporte comme/repos auth/user/view qui accepte un «Autorisation: Token 792b5fb27b4fe805e895c91274f26b6ab13cb654» champ à fournir des données pertinentes à l'utilisateur authentifié.

Voici un exercent des CSRF de decotaros connexes sur les vues respectives indiquées dans les captures d'écran: De la/commentaires/post/point final

@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 

Du/repos auth/utilisateur/point final

@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) 

Répondre

1

Les décorateurs de vos points de terminaison sont différents, vous devez donc ajuster les en-têtes en conséquence. Pour votre/rest-auth/view, l'en-tête WWW-Authenticate est requis comme mentioned here. Les commentaires view/comments/endpoint ont les décorateurs csrf_protect ce qui signifie que l'en-tête doit correspondre au csrf-token retourné dans le cookie, comme Fede mentionne dans votre entête que vous n'avez besoin que de 'X-CSRFToken' avec la valeur correspondante de le cookie.

2

Vous utilisez un type de contenu incorrect. Veuillez le changer en application/json et réessayer.

+0

Essayé à nouveau en utilisant l'application/JSON obtenir toujours la même erreur: https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/s_d20nvj.png – Anon957

+0

J'ai aussi essayé de les Référent basculer et champs Origine, obtenir encore l'erreur – Anon957

+0

Ok Essayez de nettoyer les cookies ou utilisez le facteur en navigation privée ou en ligne. Vous pouvez également essayer de désactiver les rendus, en ne laissant que json one. – mariodev

1

Je pense que vous utilisez django-rest-framework qui est fourni avec le jeton csfr exempté par défaut, mais postman envoie un jeton csfr c'est pourquoi vous obtenez cette erreur.

nettoyer les cookies pourrait résoudre le problème.

+0

Effacer les cookies n'a pas aidé, a essayé la même chose en utilisant Paw (un autre client pour REST OSX) obtenir la même erreur: https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/fxvtdwrp.png – Anon957

+0

C'est ce que le/comments/post/url pointe vers https://dl.dropboxusercontent.com/spa/mcc9m7zsju2myar/j-m31w9k.png Je suis mon premier projet utilisant ces frameworks mais on dirait qu'il utilise csrf protect, je ne sais pas comment c'est différent de csfr exempter. – Anon957

+1

Il utilise csrf_protect decorator (https://docs.djangoproject.com/fr/1.6/ref/contrib/csrf/#django.views.decorators.csrf.csrf_protect), ce qui signifie que le client a besoin d'avoir un jeton csrf à utiliser le service. Si vous utilisez csfr_exempt decorator (https://docs.djangoproject.com/fr/1.6/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt) Il ne sera pas nécessaire que le token utilise le service, essayez d'ajouter le décorateur et cela devrait fonctionner. Le CSRF est là pour une raison cependant, vous pouvez en lire plus à ce sujet dans https://docs.djangoproject.com/fr/1.6/ref/contrib/csrf/#module-django.middleware.csrf –