1. 程式人生 > >django post請求 403錯誤解決方法

django post請求 403錯誤解決方法

get django tag test http 原因 sof 配置 logs

--摘

  第一次用Django做項目,遇到了很多問題。

  今天遇到的問題是Django在處理post請求時多次出現403錯誤。

  我先描述一下問題出現的環境:我用Django寫了一個web服務端,姑且稱它為API吧。我在實際測試中發現,通過get方式可以從API中獲得數據,但是post方式卻無法獲取數據,客戶端顯示服務器端出現403錯誤。

  我找不出什麽原因,只好新建了一個表單來測試post請求,我發現通過表單發送post請求時,頁面顯示403錯誤:Forbidden CSRF verification failed. Request aborted.  我在網上查了一下,大多數人的解決方式是:在settings.py裏面的MIDDLEWARE_CLASSES中加入‘django.middleware.csrf.CsrfResponseMiddleware’,我測試了一下,加入上面的代碼之後,表單提交確實沒有問題。但是我程序中調用API時,API仍然會返回403錯誤。我查了一下API中的代碼,確定不是我寫的代碼的問題。然後我就疑惑了。不過我有一種感覺,那就是settings.py裏面的MIDDLEWARE_CLASSES的配置有問題。我又在網上查了一下,有人說把‘django.middleware.csrf.CsrfViewMiddleware’,去掉可以解決post方式出現的403錯誤。我試了一下,還真可以。

現在總結一下解決方法:

1. 在settings.py裏面的MIDDLEWARE_CLASSES中加入“‘django.middleware.csrf.CsrfResponseMiddleware’,”;

2. 在settings.py裏面的MIDDLEWARE_CLASSES中去掉“‘django.middleware.csrf.CsrfViewMiddleware’,”。

如果是解決表單提交時的出現的403錯誤“Forbidden CSRF verification failed. Request aborted.”,上面的兩種方式都可以解決,如果在其他程序裏面單獨通過post方式請求數據,那就只能用第二種方式解決。

另外我想補充的就是:第二種方式不需要以第一種方式為前提,也就是在去掉 “’django.middleware.csrf.CsrfViewMiddleware’,”後可以不用加入“’django.middleware.csrf.CsrfResponseMiddleware’”


轉自: http://www.cnblogs.com/xtt-w/p/6232559.html

django post請求 403錯誤解決方法