我主要使用django作为网站应用。我需要编写一个画布页来处理请求。在最简单的形式中,我有:
(r'^canvas/','commitments.views.canvas'),
<{1>}中的和:
urls.py
@csrf_exempt
def canvas(request):
return HttpResponse("Hello world")
中的。如果我直接加载页面,这一切都正常。但是,如果我通过Facebook画布加载页面,则会收到与modsecurity views.py
相关的错误。
对我在这里做错了什么的想法?谢谢你的帮助。
答案 0 :(得分:0)
目前,我已经能够通过关闭mod_security(Dreamhost面板中的“额外网络安全性”)来处理它。
我试图通过以下.htaccess说明处理它,但它们似乎没有做到这一点:
SetEnvIfNoCase Request_URI ^/canvas/.*$ MODSEC_ENABLE=Off
<IfModule mod_security.c>
SecFilterSelective REQUEST_URI "^/canvas/.*$" "allow,pass"
SecFilterScanPOST Off
</IfModule>
我希望能够重新启用mod_security,除了允许画布URI通过,所以如果有人有解决方案,我将不胜感激。谢谢!
答案 1 :(得分:0)
(来自here的x-post:解决方案可能相同)
所以我花了太多时间试图解决这个问题。我已经确定了一个(略显蹩脚)的解决方法:将{% csrf_token %}
添加到模板中的任何位置(我假设您已将context_instance=RequestContext(request)
参数传递给render_to_response
或其他任何地方)。
我认为正在发生的事情是cookie实际上并未设置(这可以通过检查任何浏览器的开发工具中的cookie来确认)。将上述代码添加到模板会强制执行此操作。我有一种感觉,这可能会在Django的更高版本中得到纠正,似乎有明显的1.4+修复(例如,见here)。不幸的是,dreamhost用1.2.3阻止了我们,所以我们需要做。