前言
近期,chrome又更新了,自动更新到了chrome的108.0.5359.95(正式版本) (64 位),更新到这个版本后,公司业务收到了一个故障,下面我们就来看看。
背景:
客户访问我公司的公网的网站,比如http://example.com,然后客户连接vpn。网站根据客户登录的账号,找到服务器,坐席通过vpn和服务器通信
-
• 服务器的ip地址:10.20.31.72
-
• 客户连接了vpn后的地址为10.20.25.124
客户使用chrome浏览器,chrome自动更新策略,浏览器更新到了当前最新版本108.0.5359.95,更新后客户登录网址发生了如下错误。
The request client is not a secure context and the resource is in more-private address space private
.
在以前的chrome版本当中,你只需要设置chrome://flags/#block-insecure-private-network-requests
,就可以了,但是在chrome108当中,这个选项被删除了。
chrome私有网络预检,之前我们就设置过,但是查看客户的浏览器的network,发现chrome并没有发起预检,而是直接失败了。感兴趣的可以看之前的文章。你知道吗?chrome自动更新到104版本,居然引起Java服务内存泄漏
也就是说,chrome根本没有发请求到服务器,连options探测都没有,这点通过抓包文件,验证了,所以我们服务器加跨域处理是没有用的。
解决办法
在chrome108当中,需要设置chrome://flags/#unsafely-treat-insecure-origin-as-secure
,改为enable,把不安全来源视为安全。由于我这边网站和服务器都使用的是http,所以都是不安全的,具体查看w3c定义.
因此我们需要在里面设置2个ip,以逗号分隔http://example.com,http://10.20.25.124
,并重启chrome,重启后chrome会发预检请求,预检通过后会发正常的业务请求。
希望能帮助到你。