先说说项目,项目本身是tomcat+jsp形式,本地jsp内嵌一个iframe去访问另一个系统,老版浏览器F12中请求路径中包含有cookie的请求头,新版iframe请求的时候并未携带cookie(chrome更新后的同源策略导致的)下面是解决方案:
一、老版浏览器解决方案
老版浏览器,在chrome快捷方式中加入(目录需要自己创建,修改后浏览器将重置)
--disable-web-security --user-data-dir=C:\MyChromeDevUserData
二、91版之前解决方案
1、进入 chrome://flags/
2、找到SameSite by default cookies 和 Cookies With out Same Site Must Be Secure将其设置为disabled
三、94版到91版解决方案
由于谷歌将上面的2个配置给ping屏蔽了所以无法通过配置设置,只能通过命令行设置
--flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end
四、94版以后将没有这项配置
由于项目用户用的是89版chrome所以采用配置二,已将其暂时解决,但彻底解决还是要回到chrome同源问题上,解决思路是将前台页面的请求地址全部统一成一个(此时nginx就非常nice)
举个栗子:
主系统: 172.16.127.115:8081 tomcat +新建nginx端口8080 即172.16.127.115:8080 转发到 172.16.127.103:8080
外部系统: 172.16.127.103:8080 tomcat
主系统使用iframen内嵌外部系统(ip不一致非同源,cookie携带失败)
主系统点击《跳转外部系统》访问原地址172.16.127.103:8080此时存在非同源,修改成172.16.127.115:8080
总结:把所有172.16.127.103ip换成172.16.127.115这个IP,使其点击iframe或者在ifram内部不存在非同源IP.
需要说明的是err_incomplete_chunked_encoding这个错误有点误导人,还是要看下自己项目请求的内容信息。