django https + CSRF

时间:2011-08-15 04:28:06

标签: django https nginx csrf

我正在尝试使用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,它们不使用标签。

1 个答案:

答案 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/