首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用平面页面创建一个简单的facebook应用程序,但由signed_request引起的CSRF问题

使用平面页面创建一个简单的facebook应用程序,但由signed_request引起的CSRF问题
EN

Stack Overflow用户
提问于 2011-03-24 12:55:35
回答 2查看 1K关注 0票数 2

我试图为客户的fb页面创建一个简单的,html-only的facebook应用程序。我想使用django的扁平页面,这样客户和他的工作人员就可以通过他们网站的django管理员更改应用程序的内容。问题是Django返回403 "CSRF验证失败。请求已中止“。当facebook尝试发送自己的帖子信息并访问应用程序的url时出错。

我已经知道了@csrf_exempt装饰器,但我不确定如何将它应用于平面页面视图,因为它在django.contrib代码中。此外,我只想在要求视图调用特定的facebook.html模板(而不是default.html模板)时禁用csrf保护。例如,如果恰好有一个{% crsf_exempt %}模板标记,那就太好了。

有人能想出解决这个问题的方法吗?或者也许我应该放弃使用django-flatpages为facebook应用程序提供服务的想法?

EN

回答 2

Stack Overflow用户

发布于 2011-03-24 13:51:12

尝试在名为facebook的视图上使用此装饰器:

代码语言:javascript
复制
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt

这将禁用该视图上的csrf保护。这有帮助吗?

票数 1
EN

Stack Overflow用户

发布于 2012-01-06 13:28:40

我遇到了和你完全一样的问题。我想为平面页面启用csrf (但不是站点的其余部分),并最终使用了以下中间件:

代码语言:javascript
复制
class DisableCSRFOnFlatPages(object):
    def process_request(self, request):
        try:
            FlatPage.objects.get(url=request.META.get('PATH_INFO'))
            setattr(request, '_dont_enforce_csrf_checks', True)
        except FlatPage.DoesNotExist:
            return

将其添加到您的设置,它应该禁用csrf检查,无论何时有一个平面页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5414937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档