2011-08-15 139 views
1

我試圖用csrf保護來設置django網站的工作。它在nginx服務器上工作。django https + CSRF

nginx適用於https,我的django應用成功地發送GET請求。當我試圖讓post請求它的失敗,並

Forbidden (403) 

CSRF verification failed. Request aborted. 

CSRF cookie not set. 

我在settings.py

SESSION_COOKIE_SECURE = True 
CSRF_COOKIE_SECURE = True 

,但沒有結果集

fastcgi_param HTTPS on; 

。有什麼想法嗎?

更新! 現在我嘗試使用nginx與我的django應用ower http一起工作,並且我遇到了同樣的問題,因此https沒有任何意義。 如何使用nginx和http啓動它並使用csrf保護?

更新!和解決方案! ensure_csrf_cookie - 裝飾器強制將csrf標記發送到請求的頁面。 它可以幫助我,因爲我的應用程序主要使用ajax POST和GET,它們不使用標籤。

回答

3

我相信你需要你的HTML模板內部無論是CSRF標籤,

<form action="" method="post">{% csrf_token %} 

以上視圖方法的裝飾...

@csrf_protect 
def my_view(request): 

這裏閱讀:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

+0

感謝回答,但我已經這樣做了。我的django dev服務器工作正常。 – mixo