4
我试图使用djangorestframework(DRF:http://django-rest-framework.org/)查看将HTTPS PUT请求发送到RESTful API Django Web服务。由于Django的跨站点请求伪造(CSRF)保护,我无法使其工作。使用djangorestframework的HTTPS PUT请求
PUT请求旨在允许未经身份验证的用户添加资源。
我曾考虑/尝试:
- 禁用CSRF - 不能接受的。 API与非API服务在相同的Django实例上运行。禁用CSRF保护的风险太大。
- 在PUT请求(我控制客户端)上使用
X-Requested-With: XMLHttpRequest
标头。不起作用 - 我仍然得到CSRF错误。 - 在PUT视图上使用
@crsf_exempt
装饰器。如果可以的话,我会 - 框架定义了一个类,而不是一个视图。
我目前最好的选择是自己编写PUT视图,而不使用DRF的View类。然后,我可以成功使用@crsf_exempt
修饰器。
我想使用DRF的View类 - 但看不到如何。你可以吗?
由于我问了这个问题,我已经转移到django-tastypie - 所以我不能轻易验证这一点。但是,你的答案看起来很有说服力! – Erik 2012-07-15 04:01:09