2013-01-09 35 views
0

我已經成功使用Django幾天了。我在亞馬遜網絡服務機器上運行我的django應用程序。 我被分配了一些如下所示的任意DNS名稱:http://ec2-XXX.XXX.XXX.XXX.compute-1.amazonaws.com。 我的Django應用程序正在工作查找與我的模型和幾個模板的意見。我更改DNS後出現CSRF驗證錯誤

昨晚我出去買了一個真正的DNS名稱register.com,並有DNS名稱現在指向我的Django應用程序。 因爲我做了這個改變,但是當我提交我的django表單時,我得到以下CSRF錯誤:

禁止(403) CSRF驗證失敗。請求中止。

我嘗試在瀏覽器中清除cookie,但沒有幫助。我甚至從我以前從未嘗試過的其他機器嘗試過。但仍然是同樣的問題。 爲什麼爲此IP地址分配新的DNS名稱會導致此CSRF錯誤?我該如何擺脫它?

我的形式:

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

<label for="id_email">E-mail:</label></th><td><input id="id_email" type="text" class="required" name="email" maxlength="75" /> 
<input type="submit" value="Submit" /> 
</form> 

回答

0

嘗試在settings.py文件中設置CSRF_COOKIE_DOMAIN設置到新的域名。

另外,您的操作名爲/forgotUserName2。 python中的方法和函數通常如下所示:forgot_user_name_2 ie; snake_cased。另外,django中的URL應始終以尾部斜線結尾:/forgot_user_name_2/

+0

我將我的CSRF_COOKIE_DOMAIN設置爲「percephany.com」。是對的嗎? 還是應該是「www.percephany.com」或「.percephany.com」? 我仍然收到CSRF錯誤。 當我檢查Google Chrome的Cookie時,我看到: 兩個具有相同標記值的csrftoken條目。然而,一個人的域名是「percephany.com」,另一個域名是「.percephany.com」 –

+0

其實,我清除了cookies並再次嘗試。 問題依然存在。但對於percephany.com,我只看到1個csrftoken cookie。它的域名是「.percephany.com」 –