我如何从 iPhone 应用程序向 Django 后端进行身份验证并向其发出请求以绕过 CSRF?
我正在与一位没有任何 Django 经验的 iPhone 开发人员一起工作,而且我对 Django 还比较陌生。我已经构建了一个带有 Web 界面的现有 Django 应用程序,该应用程序允许用户登录并将书籍从我们的数据库添加到他的个人图书馆。
我们正在尝试构建一个 iPhone 应用程序,允许用户进行身份验证并访问库,我想知道进行身份验证然后请求用户库的最佳方法是什么。我们一开始使用 HTTP POST 请求将凭据发送到 Django 应用程序,但我认识的另一位 Django 开发人员告诉我,这将是一个跨域请求,从 Django 1.2 开始将无法工作。
如果我无法执行跨域 HTTP POST 请求,我应该如何将数据从 iPhone 应用程序 POST 到 Django 应用程序?
I'm working with an iPhone developer who does not have any Django experience, and I am relatively new to Django. I've built an existing Django app with a web interface that allows a user to log in and add books from our database to his personal library.
We are trying to build an iPhone application that allows a user to authenticate and the access the library, and I was wondering what is the best way to do the authentication and then request the user's library. We started out using an HTTP POST requests to send credentials to the Django app, but another Django developer I know told me this would be a cross-domain request which would not work starting with Django 1.2.
If I can't do cross-domain HTTP POST requests, how should I POST data from the iPhone app to the Django application?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只需使用 csrf_exempt 装饰器即可。 http://docs.djangoproject.com/ en/dev/ref/contrib/csrf/#exceptions
是的,使用 POST 请求类型,这是向服务器发送数据时唯一合理的选择。根据 RESTful API 指南:http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services
Just use the csrf_exempt decorator.http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#exceptions
And yes, use the POST request type, it's the only logical choice when you're sending data to the server. As per RESTful API guidelines: http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services
您可以解决 CSRF 问题。在 Django 1.4 中
只是在函数前面使用装饰。
You can solve CSRF Issue. in django 1.4
Just using decoration at front of function.
来自iphone应用程序的http请求不是跨域的
http request from the iphone application is not cross-domain