我正在尝试通过我在DreamHost上使用fb.py制作的Facebook应用程序(iframe)访问Django页面,并且我一直收到内部服务器错误。
查看错误日志,这就是我所看到的:
ModSecurity:输出过滤器:无法读取存储桶(rc 104):由对等方重置连接
我认为这只与POST请求有关。大约一年前,有人在一些论坛上询问过这个错误,但无济于事:
ModSecurity: Output filter: Failed to read bucket (rc 104): Connection reset by peer
所有我能找到的搜索都在http://www.modsecurity.org:
“当mod_security拒绝这样的请求时,它会向输出过滤器链发送一个错误桶,例如代码403,保持r->状态不变(例如500)。”
有什么想法吗?谢谢!
答案 0 :(得分:0)
您是否按照https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax实施了CSRF保护?
请注意与您正在使用的Django版本进行交叉检查。
答案 1 :(得分:0)
所以我花了太多时间试图解决这个问题。我已经确定了一个(略显蹩脚)的解决方法:将{% csrf_token %}
添加到模板中的任何位置(我假设您已将context_instance=RequestContext(request)
参数传递给render_to_response
或其他任何地方)。
我认为正在发生的事情是cookie实际上并未设置(这可以通过检查任何浏览器的开发工具中的cookie来确认)。将上述代码添加到模板会强制执行此操作。我有一种感觉,这可能会在Django的更高版本中得到纠正,似乎有明显的1.4+修复(例如,见here)。不幸的是,dreamhost用1.2.3阻止了我们,所以我们需要做。