2010-08-05 4 views
3

Je travaille avec un développeur iPhone qui n'a aucune expérience Django, et je suis relativement nouveau à Django. J'ai construit une application Django existante avec une interface web qui permet à un utilisateur de se connecter et d'ajouter des livres de notre base de données à sa bibliothèque personnelle.Comment m'authentifier et faire des demandes à partir d'une application iPhone vers un backend Django pour contourner CSRF?

Nous essayons de construire une application iPhone qui permet à un utilisateur de s'authentifier et d'accéder à la bibliothèque, et je me demandais quelle est la meilleure façon de procéder à l'authentification, puis de demander la bibliothèque de l'utilisateur. Nous avons commencé par utiliser des requêtes HTTP POST pour envoyer des informations d'identification à l'application Django, mais un autre développeur Django que je connais m'a dit que ce serait une requête inter-domaines qui ne fonctionnerait pas à partir de Django 1.2.

Si je ne peux pas effectuer de requêtes HTTP POST interdomaines, comment puis-je POSTER des données depuis l'application iPhone vers l'application Django?

+0

Demandez-vous à ce sujet? http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ –

+0

oui. J'ai trouvé cet article, mais je suppose que ce que je veux vraiment savoir, c'est s'il est «faux» d'utiliser les requêtes POST normales de l'application iPhone pour renvoyer les données à l'application Django. – gohnjanotis

Répondre

5

Il suffit d'utiliser le décorateur csrf_exempt. Oui, utilisez le type de requête POST, c'est le seul choix logique lorsque vous envoyez des données au serveur. Conformément aux directives de l'API RESTful: http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services

+0

Y a-t-il des risques réels de piratage si cela n'est fait que pour une vue de connexion? C'est la solution miracle évidente ... mais CSRF est là pour une raison. Juste le désactiver ..? Meh. –

+0

Oui CSRF est là pour empêcher la falsification de requêtes entre sites, mais peu importe ce que vous faites, quelqu'un qui utilise votre API ne sera jamais sur le même domaine. –

-1

demande http de l'application iPhone est pas interdomaine

+1

ce n'est pas? alors quel serait le domaine de l'application iPhone? – gohnjanotis

1

Vous pouvez résoudre le problème CSRF. en django 1.4 Juste en utilisant la décoration en face de la fonction.

Solution: 
    @csrf_exempt 
    def PostData(requst): 
    pass 
Questions connexes