• 关于解决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 协议发送),否则无效。

  • 相关阅读:
    Python字符串的切片
    Python字符串的劈分
    Python函数的参数
    接口幂等性
    Kafka 中的设计思想
    Stream特性
    API接口的安全设计验证:ticket,签名,时间戳
    linux命令
    Java注解和反射
    su 和 sudo
  • 原文地址:https://www.cnblogs.com/cuijinlong/p/13638716.html
Copyright © 2020-2023  润新知