關於解決Chrome新版本中cookie跨域攜帶和samesite的問題處理


關於解決Chrome新版本中cookie跨域攜帶和samesite的問題處理

新版本處理方式如下

針對Chrome版本67及以上

注意,這個里面的SameSite不能設為null,設空的話,還是會走默認值Lax

其中,SameSite的值可以填3個:Strict,Lax,None.
缺省的值為Lax,而且當你設置其為空時,在新的Chrome中還是會給予默認值Lax.

3個模式的介紹

Strict

嚴格模式

Lax

寬松模式

None

可以在第三方環境中發送cookie
在這種模式下,必須同時啟用Secure才行

Chrome版本(51~66)

在這些版本中,瀏覽器不接受SameSite=None.如果套用上面的代碼會發現無法登錄

解決方法1

	public static void setCookies(HttpServletResponse response, String name, String value, int selectExpires,
			boolean openbrowser) {
		ResponseCookie cookies = ResponseCookie.from(name, value) // key & value
				.httpOnly(true) // 禁止js讀取
				.secure(true) // 在http下也傳輸
				.path("/") // path
				.maxAge(time(selectExpires)) // 1個小時候過期
				.sameSite("None") // 大多數情況也是不發送第三方 Cookie,但是導航到目標網址的 Get 請求除外
				.build();
		response.setHeader(HttpHeaders.SET_COOKIE, cookies.toString());
	}

 Chrome 計划將Lax變為默認設置。這時,網站可以選擇顯式關閉SameSite屬性,將其設為None。不過,前提是必須同時設置Secure屬性(Cookie 只能通過 HTTPS 協議發送),否則無效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM