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

django post請求 403錯誤解決方法 django post請求 403錯誤解決方法

django post請求 403錯誤解決方法

 

--摘

  第一次用Django做專案,遇到了很多問題。

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

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

  我找不出什麼原因,只好新建了一個表單來測試post請求,我發現通過表單傳送post請求時,頁面顯示403錯誤:Forbidden CSRF verification failed. Request aborted.  我在網上查了一下,大多數人的解決方式是:在settings.py裡面的MIDDLEWARE_CLASSES中加入‘

.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’”

--摘

  第一次用Django做專案,遇到了很多問題。

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

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

  我找不出什麼原因,只好新建了一個表單來測試post請求,我發現通過表單傳送post請求時,頁面顯示403錯誤:Forbidden CSRF verification failed. Request aborted.  我在網上查了一下,大多數人的解決方式是:在settings.py裡面的MIDDLEWARE_CLASSES中加入‘.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’”