前端請求cookie丟失問題

問題提出

在開發中的登錄功能基本思路以下:html

  1. 前端請求驗證碼,後端生成一個驗證碼(保存在session中)並將其返回給前端,
  2. 前端用戶輸入帳號、密碼、驗證碼後將表單傳給後端,後端對比session中的驗證碼和用戶輸入的是否一致。

可是後端在第二步時,session中沒有存有以前生成的驗證碼,也就沒法對比用戶的驗證碼是否正常,致使系統一直沒法進入。前端

問題分析

首先須要考慮跨域問題,前端發送請求時要攜帶cookie,不然獲取驗證碼請求和登錄請求會建立兩次session,致使沒法取出上一次產生的驗證碼。打開開發者工具會發現請求頭中沒有cookie。 chrome

解決思路

在項目先後端中加入跨域代碼
https://www.jianshu.com/p/dc506490c796  // 前端案例
https://www.cnblogs.com/gcdd/p/12292415.html  //後端案例

可是本項目在先後端已經加入了相關的代碼,仍是存在沒有cookie的現象。後端

瀏覽器層面問題

以前測試都是在chrome瀏覽器中進行的,換了火狐發現這個問題不復存在了,因此極可能是chrome瀏覽器的問題,通過百度發現chrome瀏覽器會存在session「丟失「問題。具體現象以下:跨域

https://www.jianshu.com/p/76d026cc4dd7
https://blog.csdn.net/fouling/article/details/108357824

因此將chrome瀏覽器的SameSite屬性關閉便可。 在瀏覽器輸入這個地址瀏覽器

chrome://flags/

而後將SameSite屬性設置爲Disabled便可解決問題。 cookie

相關文章
相關標籤/搜索