Chrome浏览器升级80以后导致重定向自动登录失效问题记录和解决方案
问题
Chrome 浏览器升级到80版,针对sameSite设置更加严格,默认不允许设置第三方Cookie
查阅资料都是讲述为什么Chrome采取更加严格的cookie设置策略,没有详细的解决方案
我的情况说明,希望对你们有参考价值
环境:因为本站被嵌入到其他产品中使用,需要在iframe中实现自动登录,相当于我们站点是第三方在人家的产品中设置cookie来实现自动登录
参考资料
sameSite 介绍: https://www.cnblogs.com/gxp69/p/12565927.html
浏览器设置解决:https://www.cnblogs.com/tianma3798/p/13517449.html
后端Tomcat设置解决:https://stackoverflow.com/questions/57505939/how-to-set-samesite-cookie-in-tomcats-cookie-processor
方案:
肯定不可以在浏览器端设置,容易造成安全漏洞,因此只能通过后端来进行适配解决
因为samesite 设置为none, 必须是secure,也就是采用https协议
在Nginx中对本站配置https配置,配置完成后,发现中间有一环是sendRedirect重定向,请求协议从https降级到http,又需要解决这个问题
解决方案
1.Nginx 的location 中新增
proxy_set_header X-Forwarded-Proto $scheme;
2.Tomcat中的server.xml中新增
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">...<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto" />
....</Host>
3.代码中设置获取https协议
/*** 返回应用的根URL,包含结尾的<code>/</code>。兼容存在Apache* mod_proxy反向代理的情况:首先判断是否有x-forwarded-host头,如有则从中得出原始请求的HOST头,再计算.* (详见http://httpd.apache.org/docs/2.2/mod/mod_proxy.html) <b>例子</b>: if request* "http://localhost:8080/app1/dir1/page1.jsp", the method return "http://localhost:8080/app1".* 增加X-Forwarded-Proto头判断,如果有,则从请求中获取最原始的协议,可支持https反向代理至http.* */public static String getContextUrl(HttpServletRequest request) {String xForwardedHost = request.getHeader("X-Forwarded-Host");String orginProtocol = request.getHeader("X-Forwarded-Proto");String host = "";if (!StringUtil.isEmpty(xForwardedHost)) {host = StringHelper.split(xForwardedHost, ",")[0].trim();} else {host = request.getHeader("Host");}String protocol = "";if (StringUtil.isNotEmpty(orginProtocol)) {if (("https").equals(orginProtocol.toLowerCase())) {protocol = "https";} else {protocol = "http";}} else {protocol = request.getScheme();}return protocol + "://" + host + getContextPathWithSlash(request);}
协议问题解决,需要解决第三方Cookie的问题
我用的Tomcat 9.0.38 版本
在Tomcat的conf/context.xml文件中新增
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" sameSiteCookies="None"/
还有一个小问题,就是http 请求到https的时候referer路径不全
参考资料
https://www.cnblogs.com/amyzhu/p/9716493.html
设置
在html页面的<head>标签中新增
<meta name="referrer" content="no-referrer-when-downgrade">
Chrome浏览器升级80以后导致重定向自动登录失效问题记录和解决方案相关推荐
- Chrome浏览器地址栏配置二维码自动生成工具
打开Chrome浏览器 新开一个窗口地址栏输入 chrome://flags/ 搜索qr code 下拉框选择Enable选项 重启浏览器即可 点击需要生成二维码的网页地址栏 出现如下图标 点击小图标 ...
- Chrome浏览器升级配置
Chrome浏览器禁止更新 打开Chrome浏览器,在地址栏中输入chrome://help,按下回车键 谷歌无法启动更新检查(错误代码为4: 0x80070005-system level) 快捷键 ...
- bug历程——记一次由chrome浏览器Stalled优化缓存导致的请求bug
故事的开始是这样的 在一个月黑风高的夜晚,秋名山小白依旧在写着bug,这次他想实现的是解决重复请求问题.其实这个问题解决方案很普通,小白准备使用AOP+Redis分布式锁. 一切都很愉快的进行着,问题 ...
- [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
补充学习资料: TK13大神Windows PE专栏 https://blog.csdn.net/u013761036/article/category/6401236 TK13大神Windows对抗 ...
- chrome 浏览器 https 不安全 导致密码不能自动保存
参考 https://zhidao.baidu.com/question/392953253656295525.html 一开始都没注意到, 证书保存的按钮 在高级 证书设置中 直接导入该站证书 重启 ...
- 解决Chrome浏览器中无法通过代码实现自动播放错误
错误提示为:Uncaught (in promise) DOMException: play() failed because the user didn't interact with the do ...
- 谷歌Chrome浏览器低延迟(低于500ms)播放海康威视、浙江大华RTSP解决方案(演示视频)
Chrome.Firefox等浏览器低延迟(300ms)播放海康.大华RTSP解决方案(演示视频)
- ID的权限问题导致免密码登录失效
2019独角兽企业重金招聘Python工程师标准>>> 思路:我使用的ID是aapp016,确保每台服务器上都有相同的ID,使用man ssh-keygen生成该ID 的公钥,传到每 ...
- 解决升级Chrome浏览器之后出现跨域错误:Access to xxx has been blocked by CORS policy: XXXX
一.错误产生的背景 Google Chrome浏览器升级 1.1 Google Chrome漏洞报告,要求升级 近日,Google Chrome官方发布Google Chrome远程代码执行漏洞(CV ...
- 基于Chrome浏览器插件实现SAE自动登录
不知道各位大神在用sae开发项目是不是有这样的困扰,sae是没有记住密码功能的,每次系统都需要调用新浪登录的api来进行登录,ae这样做可能是出于安全考虑吧,其实对于我自己的pc机开发来讲,有个自动登 ...
最新文章
- vue2.0 通过ip访问自己运行的项目
- SLAM:SLAM之VSLAM的简介
- Spring MVC @ModelAttribute 详解
- 一维的Haar小波变换
- 【lua学习】7.环境
- 实验楼linux指令,Linux操作命令(二)
- js java cookie_js cookie 工具
- Linux安装yum(最全依赖包)
- 【No buffer space available】异常解决
- [走过的路]联想时光——人艰不拆(店员篇+推销员篇)
- signature=ac75cb7977a45c0f7d8a73dca59a4c27,合肥2016年8月24日至2016年9月5日交通违章查询...
- 多功能手持读数仪VH03如何连接手机蓝牙
- ospf 指定dr_OSPF协议 DR/BDR的选取规则
- 用这9个问题来审视自己
- Js 跳转页面和打开新窗口的方法
- 二分查找(序列是顺序的运用递归)
- 上海某大型游戏公司Unity3D基础面试题
- MySQL数据盘空间满了
- 离线安装cmake错误
- Android Instrumentation源码分析(附Activity启动流程)