tho*_*len 8 python django csrf django-csrf
我正在运行Django 1.2.2,当我尝试登录Django管理员时出现以下错误:
禁止(403)CSRF验证失败.请求中止.
失败的原因:
没有CSRF或会话cookie.
**我没有对准系统管理员进行任何定制,当我检查源时,表格中有一个CSRF令牌,我认为是正确的位置.
当我查看正在发送的实际请求时,会发送一个csrf令牌,但Django仍然说CSRF验证失败.
谁能指出我正确的方向?为什么会这样?
我在Django 1.2.1 FINAL上遇到了同样的问题.由于我知道我们的生产站点上的Django永远不会从1.0更新(出于各种原因),我找到了一个解决方法,我将其实现到我的settings.py开发版本中,使生产settings.py保持不变.
使用以下代码在应用程序目录中创建middleware.py文件:
class disableCSRF:
def process_request(self, request):
setattr(request, '_dont_enforce_csrf_checks', True)
return None
Run Code Online (Sandbox Code Playgroud)
然后在您的开发版本的settings.py中,将其插入MIDDLEWARE_CLASSES:
'your_app_name.middleware.disableCSRF',
Run Code Online (Sandbox Code Playgroud)
也许不是最安全的解决方案,但我们的Django站点是严格内部的,因此对任何类型的恶意行为都存在最小风险.这个解决方案很简单,不涉及对模板/视图的更改,并且它可以立即工作(与我尝试过的其他方式不同).
希望有类似情况的人会觉得这很有用.
感谢John McCollum,我发现了这个网站.
1)你有'django.middleware.csrf.CsrfViewMiddleware'你的settings.MIDDLEWARE_CLASSES?
2)你确定你一直在1.2.2吗?那只是昨晚才出来的......
| 归档时间: |
|
| 查看次数: |
9542 次 |
| 最近记录: |