2017-06-03 178 views
0

我正在使用python Django創建REST API's。客戶端是在react中開發的,並且是作爲獨立應用程序生成的。我是uios axios觸發http請求。我需要在每個post請求中傳遞CSRF token,但無法從瀏覽器獲取CSRF token。如何在使用REST API時在頭文件中獲得CSRF令牌並將其包含在其中?

+1

CSRF令牌可用作cookie。那究竟是什麼問題?如何使用React從瀏覽器獲取它? –

+0

在我的瀏覽器中,csrf令牌沒有被保存爲cookie –

+1

如果'settings.py'中存在'CSRF_COOKIE_SECURE = True',並且您正在非安全地訪問站點,例如從本地主機訪問站點,就會發生這種情況。 –

回答

0

如何在做Ajax請求時傳遞CSRF?

首先,確保您的設置文件中的中間件列表中包含django.middleware.csrf.CsrfViewMiddleware。該中間件將CSRF_TOKEN設置爲cookie,以便您可以爲您的ajax請求檢索它。

其次,Django現在可以在會話中存儲CSRF。但是,在特定情況下,您不希望在會話中使用CSRF_TOKEN。確保您有CSRF_USE_SESSIONS = False(默認情況下)在Cookie中擁有CSRF。

如果你檢查cookie,你現在應該有一個CSRF_TOKEN。你可以動態地將它添加到你的ajax請求中,如果你正在使用下面的代碼使用jQuery。

https://docs.djangoproject.com/en/1.11/ref/csrf/#setting-the-token-on-the-ajax-request

我說,如果你是因爲你使用的反應,它不需要jQuery的做Ajax請求使用jQuery,這取決於你怎麼做他們。

相關問題