我正在尝试使用csrf保护设置django站点工作功能https。它适用于nginx服务器。
nginx适用于https,我的django应用程序成功提供GET请求。当我尝试发帖请求时,
失败了Forbidden (403)
CSRF verification failed. Request aborted.
CSRF cookie not set.
我设置
fastcgi_param HTTPS on;
在settings.py 中
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
但没有结果。有什么想法吗?
更新<!/强> 现在我尝试使用我的django app ower http与nginx,我有同样的问题,所以https没有意义。 如何使用nginx ower http启动它并使用csrf保护?
UPDATE!和解决方案! ensure_csrf_cookie - 装饰器强制将csrf令牌发送到请求的页面。 它对我有帮助,因为我的应用主要使用ajax POST和GET,它们不使用标签。
答案 0 :(得分:3)
我相信你需要你的html模板中的csrf标签,
<form action="" method="post">{% csrf_token %}
或视图方法上方的装饰器...
@csrf_protect
def my_view(request):
请在此处阅读:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/