Django Facebook中缺少CSRF令牌';s post';签名请求';
我在Django项目中工作。目的是从Facebook导入用户信息。首先,我正在使用Facebook提供的注册社交插件。我有一个基本模板,包括注册插件的iframe;正如Facebook api文档所示。呈现此模板的视图如下所示:Django Facebook中缺少CSRF令牌';s post';签名请求';,django,facebook,csrf,Django,Facebook,Csrf,我在Django项目中工作。目的是从Facebook导入用户信息。首先,我正在使用Facebook提供的注册社交插件。我有一个基本模板,包括注册插件的iframe;正如Facebook api文档所示。呈现此模板的视图如下所示: def registration(request): if (request.method == "POST"): return HttpResponse("it posted!") else: return rend
def registration(request):
if (request.method == "POST"):
return HttpResponse("it posted!")
else:
return render_to_response("ui/registration.html", {},
context_instance=RequestContext(request))
当我按下插件上的register键,Facebook向我发送了已签名的请求,Django就抱怨缺少csrf令牌。我还尝试通过使用csrf(请求)在上下文字典中传递csrf令牌来显式地包含csrf令牌,但是这仍然不能解决问题。csrf保护用于防止跨站点发布。但是,在这种情况下,您希望接受来自Facebook的帖子,因此您应该在您的视图上使用接受签名请求的
csrf\u豁免
decorator。参见CSRF例外部分:CSRF保护用于防止跨站点发布。但是,在这种情况下,您希望接受来自Facebook的帖子,因此您应该在您的视图上使用接受签名请求的csrf\u豁免
decorator。请参阅CSRF例外部分:为此,您需要做几件事:
@csrf\u export
装饰你的视图或者,您可以编写自己的中间件来检查来自facebook的csrf令牌,而不是步骤2和步骤3。为此,您需要做一些事情:
@csrf\u export
装饰你的视图或者,您可以编写自己的中间件来检查来自facebook的csrf令牌,而不是步骤2和步骤3。查找fandjango应用程序,尤其是中间件。
对我来说就是这样寻找fandjango应用程序,尤其是中间件。
我已经尝试过这个解决方案,是的,这是一个解决办法。然而,facebook建议使用csrf令牌。检查页面的结尾。他们传递csrf令牌的方法与Django的意思不同,Django的意思是您必须使用豁免并自己进行检查。我已经尝试过该解决方案,是的,这是一个解决方案。然而,facebook建议使用csrf令牌。检查页面的结尾。他们传递csrf令牌的方法与Django的意思不同,Django的意思是你必须使用豁免并自己进行检查。