我正在使用Django 1.7和django-rest-framework。CSRF失敗:CSRF令牌丟失或不正確
我做了返回我一些JSON數據把這個在我settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
'DEFAULT_RENDERER_CLASSES': (
# 'rest_framework.renderers.XMLRenderer',
'rest_framework.renderers.JSONRenderer',
# 'rest_framework.renderers.BrowsableAPIRenderer',
)
}
當我做GET調用,它返回我所有的數據,但是當我試圖用PUT/PATCH我得到一個API:
--------Response Headers---------
Status Code: 403
Date: Wed, 29 Oct 2014 18:51:42 GMT
Vary: Cookie
Server: WSGIServer/0.1 Python/2.7.8
Allow: GET, POST, PUT, PATCH, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
---------------------------------
--------Response Body-----------
{"detail": "CSRF Failed: CSRF token missing or incorrect."}
---------------------------------
這隻發生在我登錄時,如果我是匿名的,我可以正確地PUT/PATCH。
我與@csrf_exempt
試圖和我的錯誤,我已經包括在設置中,rest_framework.permissions.AllowAny
...
我不知道發生了什麼事情。有誰知道這個問題是什麼?
我知道我應該給CSRF令牌,當我驗證,但實際上我使用.NET Windows窗體應用程序與此API進行通信,並且它通過HTTPRequest和HTTPResponse方法進行GET調用,我不知道如何在這種情況下獲得CSRF令牌,我不使用AJAX或HTML表單。 **編輯** .NET應用程序接收JSON格式的純文本,並返回相同的 – 2014-10-29 20:54:54
你沒事,用cookie我可以處理csrftoken並將其放回到標題數據中,所以我可以使PUT/PATCH調用,如果我登錄。謝謝! – 2014-10-30 19:14:34
@AlexLordMordor您能解釋一下您的解決方案嗎?以及爲什麼當你是一個登錄用戶時它不工作,但以匿名方式工作。 (我有完全相同的問題) – 2015-03-30 04:59:28