[英]Django (DRF) & React - Forbidden (CSRF cookie not set)
[英]Django DRF with React: How to obtain CSRF cookie?
我有一個在frontend.example.com
運行的 React 前端和一個 Django 后端,DRF 在backend.example.com
運行。 我正在使用 Django Session 身份驗證,我想正確實施CSRF 保護。
以 React 登錄頁面frontend.example.com/login
為例。 這是用戶第一次訪問該頁面。 有一個帶有用戶和密碼的表單,在提交時會向 Django 后端創建一個新的 POST 請求。 據我所知,CSRF 令牌 cookie 應該已經包含在此請求中,對吧?
如何從 Django 后端獲取該 CSRF 令牌? 我正在考慮在加載登錄頁面時向 Django 后端發出 GET 請求以獲取該 CSRF 令牌 cookie。 這是這樣做的方法還是有其他最佳做法?
Django 有一個 AJAX 請求和如何處理 CSRF 的部分: AJAX
使用此方法,您應該為每個發布請求一遍又一遍地發送令牌。 另一種方法是使用 CORS。 在此方法中,您僅響應已列入白名單的域,並且標頭也已列入白名單。 因此,您無需獲取和傳遞 CSRF 令牌,而是檢查請求是否來自正確的域,然后您可以對其進行響應。 並結合用於用戶身份驗證的令牌系統,您應該會很好。
如果您使用 DRF,則可以使用此 package 來處理 CORS: django-cors-headers
使用速率限制還可以幫助您避免垃圾郵件和機器人造成明顯傷害。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.