如何使用Django Piston和CSRF保护允许POST restful Web服务调用?

时间:2011-08-21 10:33:48

标签: django django-piston

我是django-piston的新手,由于Django的CSRF保护,无法使POST webservice调用工作。如何允许Web服务调用绕过CSRF保护并仍允许其余网页保留它们?

2 个答案:

答案 0 :(得分:3)

找到解决方案:https://bitbucket.org/jespern/django-piston/issue/82/post-requests-fail-when-using-django-trunk,归功于Brian Zambrano。

我觉得有点烦人,这已经有两年了,补丁已经创建,但仍未合并到最新来源。

要解决此问题,请将补丁应用于您的piston / resource.py文件,方法是添加 self.csrf_exempt = getattr(self.handler,'csrf_exempt',True),如下所示:

         self.handler = handler()
+        self.csrf_exempt = getattr(self.handler, 'csrf_exempt', True)

         if not authentication:
             self.authentication = NoAuthentication()

答案 1 :(得分:0)

为什么你需要这样做? CSRF是一个简单的域名检查...但如果你真的需要它,答案就在文档中:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#csrf-protection-should-be-disabled-for-just-a-few-views