簡體   English   中英

無需調用視圖函數即可引發Django HttpResponseForbidden

[英]Django HttpResponseForbidden raised without calling view function

我正在寫一個django服務器。 一個非常奇怪的情況發生了-當我試圖測試一下,我POST到URL的一個,只有process_request中間件被擊中,同時兼具process_view對應於該URL和查看功能都沒有命中。 該過程以某種方式停止在中間,並且HTTP 403返回到客戶端。 另外,使用相同的url(和相同的視圖函數),我在另一時間GET它,並且該過程順利進行,沒有錯誤報告。 所有其他視圖功能/ URL都可以正常工作。

服務器有點大,所以我這里不做展示。 但是,我只有兩個有特色的middlewares process_requestprocess_view ,並且正如我所說的,只有process_request被稱為; 它不返回HttpResponseForbidden

這是已安裝的middlewares

'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'ttam_container.ttam.middlewares.authentication.Authentication'

這是已安裝的應用程序:

'django_concurrent_test_server',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'ttam_container.ttam',
'ttam_container.ui'

任何想法可能會出問題嗎?

可能是因為您忘記了在請求中包含csrf令牌。 如果您使用html表單,請在其中包含csrf_token標記

<form ...
    {% csrf_token %}
    ...

如果您使用ajax請求-請閱讀文檔以了解如何使用ajax和csrf保護https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM