最近剛剛遇到乙個問題
公司專案使用的跨域身份驗證解決方案是jwt(json web token)即把使用者資訊加密後的身份令牌token返回給前端 在前端呼叫一些涉及身份的敏感介面時把token寫進請求頭進行驗證。
我在寫**的時候時候jwt規定的bearer驗證的標準請求方式:
authorization: bearer [bearer_token]
如:
一直也沒出過問題。 但是最近公司的乙個專案在本地開發的過程**現了bug:
該專案同樣使用token令牌進行身份鑑權 但是使用token的方式不是後端傳送前端本地storage儲存、呼叫時手動新增請求頭, 而是後端在響應請求的時候就通過set-cookie的方式傳送。
這個專案之前使用服務端直接把token寫進cookie的方式實現「自動登入」(不用前端手動給請求新增令牌)一直無事發生 直到最近出現了這個問題。
經過查閱 其實這種傳遞令牌的方式 存在遭受csrf攻擊的隱患 而瀏覽器本著更安全的理念 會不斷加大對此的限制
這裡的csrf攻擊與加大限制相關請移步阮一峰老師的部落格
cookie 的 samesite 屬性
所以服務端使用set-cookie時需要設定samesite屬性以防止 csrf 攻擊和使用者追蹤 而本地環境(localhost)做開發時 由於網域名稱問題 需要設定
set-cookie: widget_session=abc123; samesite=none; secure
不過前端這邊直接改掉token傳遞的方式也許更加方便。
偷一張服務端cookie設定的**…
變數的值沒好意思繼續索要…依稀能分辨出來samesite、secure、設定網域名稱的domin等等…
專案實現登入攜帶token
1.使用者第一次登入,呼叫後端登入介面,傳送使用者名稱和密碼 2.後端驗證使用者名稱和密碼是否正確,成功則返回token,3.前端拿到token,將token儲存在sessionstorge 和vuex中,並跳轉到主頁 4.前端每次跳轉路由就判斷sessionstorge中是否有token,沒有就跳...
Postman每次請求攜帶token
單點登入,登入成功之後獲取token,每次登入 token都會改變 且token具有過期時間 測試中,每次post請求都要攜帶乙個token,token是通過get請求得來的,動態變化的,並且token有有效期的限制。為了避免重複獲取token來手工修改給post請求賦值 1.把token做成環境變...
Ajax請求攜帶Cookie
目錄服務端設定跨域的幾種方式 方式二 對單個介面處理 方式三 crossorigin註解 方式四 nginx配置新增允許跨域請求 先來了解下xhr xhr,全稱為xmlhttprequest,用於與伺服器互動資料,是ajax功能實現所依賴的物件,jquery中的ajax就是對 xhr的封裝。還有ax...