/**
* 判断是否支持SameSite=None
*
* @param request
* @return true(不支持), false(支持)
*/publicstaticBooleandisallowsSameSiteNone(HttpServletRequest request){String userAgent = request.getHeader("User-Agent");if(StringUtils.isEmpty(userAgent)){returnfalse;}// Cover all iOS based browsers here. This includes:// - Safari on iOS 12 for iPhone, iPod Touch, iPad// - WkWebview on iOS 12 for iPhone, iPod Touch, iPad// - Chrome on iOS 12 for iPhone, iPod Touch, iPad// All of which are broken by SameSite=None, because they use the iOS networking// stack.if(userAgent.contains("CPU iPhone OS 12")|| userAgent.contains("iPad; CPU OS 12")){returntrue;}// Cover Mac OS X based browsers that use the Mac OS networking stack.// This includes:// - Safari on Mac OS X.// This does not include:// - Chrome on Mac OS X// Because they do not use the Mac OS networking stack.if(userAgent.contains("Macintosh; Intel Mac OS X 10_14")&&
userAgent.contains("Version/")&& userAgent.contains("Safari")){returntrue;}// Cover Chrome 50-69, because some versions are broken by SameSite=None,// and none in this range require it.// Note: this covers some pre-Chromium Edge versions,// but pre-Chromium Edge does not require SameSite=None.if(userAgent.contains("Chrome/5")|| userAgent.contains("Chrome/6")){returntrue;}returnfalse;}