J'essaye d'envoyer une demande de HTTPS PUT à un service Web de Django d'API de RESTful en utilisant une vue de djangorestframework (DRF: http://django-rest-framework.org/). Je n'arrive pas à faire fonctionner cela grâce à la protection CSRF (Cross Site Request Forgery) de Django.HTTPS PUT Demande utilisant djangorestframework
La demande PUT est destinée à permettre aux utilisateurs non authentifiés d'ajouter une ressource.
Ce que j'ai examiné/essayé:
- Désactivation CSRF - pas acceptable. L'API s'exécute sur la même instance Django que le service non-API. Désactiver la protection CSRF est trop risqué.
- En utilisant l'en-tête
X-Requested-With: XMLHttpRequest
sur la demande PUT (je contrôle les clients). Ne fonctionne pas - Je reçois toujours l'erreur CSRF. Utilisation du décorateur@crsf_exempt
dans la vue PUT. Je voudrais si je pouvais - le cadre définit une classe, pas une vue.
Ma meilleure option actuelle est d'écrire des vues PUT moi-même sans utiliser la classe View de DRF. Je peux ensuite utiliser le décorateur @crsf_exempt
avec succès. Je voudrais utiliser la classe View de DRF - mais je ne vois pas comment. Peut tu?
Depuis que j'ai posé cette question je suis passé à django-tastypie - donc je ne peux pas facilement vérifier cela. Mais, votre réponse semble convaincante! – Erik