2016-09-04 65 views
1

我使用郵遞員來檢查從我的Django的休息框架JSON響應。與郵遞員使用Django {「細節」:「CSRF失敗:CSRF令牌丟失或不正確。」}

當我第一次嘗試通過POST方法上傳ID,郵箱,密碼,我的AWS(亞馬遜Web服務)的Django,它工作得很好。這回,如:

{ 
    "key": "99def123123123123d88e15771e3a8b43e71f" 
} 

但首先之後試試,換句話說,從第二次嘗試,它返回

{"detail":"CSRF Failed: CSRF token missing or incorrect."} 

(另外編輯+)我的膩子終端說"POST /rest-auth/login/ HTTP/1.1" 403 58

我看到http://kechengpuzi.com/q/s31108075,但對我的情況並不適合。

http://django-rest-framework.narkive.com/sCyJk3hM/authentication-ordering-token-vs-session,我無法找到解決方案,它使用郵遞員

  1. 我怎麼能適當地使用郵遞員?

  2. 或者你也可以推薦其他工具的使用?

我正在與retrofit2 Android應用程序所以我需要工具來檢查POST,GET方法和響應。

+0

你的意思是你得到兩個請求沒有任何改變之間不同的結果? – Windsooon

+0

是的,我在第一次嘗試和其他嘗試中使用POST方法發佈'{ 「用戶名」:「thesamething」, 「email」:「thesamething」, 「password」:「thesamething」 }。當我從DRF(實際上是django-rest-auth)複製的給定DRF html頁面以相同的方式使用POST方法時,此錯誤未發生。但在郵遞員,它的發生。 –

+0

你設置你的要求CARF令牌? – Windsooon

回答

2

您的API需要CSRF令牌,你要CSRF令牌添加到請求(和郵遞員):

data: { csrfmiddlewaretoken: csrf_token, "username": "thesamething", "email": "thesamething", "password": "thesamething" } 

你可以從你的表單輸入字段來獲得CSRF令牌(你會發現一個隱藏字段,如果你使用django build-in form api)或者如果你使用Ajax,你可以看看Cross Site Request Forgery protection。它與你的授權密鑰無關,你的密鑰用於識別你是誰,CSRF令牌是確保這個請求是從您的服務器發送的。

+0

我是否必須在郵遞員的身體中添加'data:{csrfmiddlewaretoken:csrf_token,「username」:「thesamething」,「email」:「thesamething」,「password」:「thesamething」}?不要更改標題中的任何內容? –

+0

是的,和csrf_token應該是像YQ4gPyIVJ8V3x ... – Windsooon

+0

感謝您的意見。 –

相關問題