前提
近来在项目对接问题中,碰到了个神奇的跨域问题。同一个服务和接口,在部分设备上调用正常,在另一些设备上调用跨域,遂排查。
排查流程
解决问题
首先锁定关键词insecurePrivateNetwork
网上其实关于这个错误的描述很多,初步定位是从公网向私网(局域网)发起访问导致的。
解决方案就是将chrome的 chrome://flags/#block-insecure-private-network-requests 配置从default改成disabled就行。
修改后发现问题确实已经解决。
思考
虽然问题解决了,但是另一个问题浮出水面。之前那些能正常访问的设备,其配置值也是default, 这是什么情况呢。
后续参考 chromeenterprise.google/policies/#I…
得知:
-
该策略控制是否允许网站以
不安全的方式向更多专用网络端点发出请求。 -
该策略阻止网络向更私有的网络发起请求(1. IP地址是localhost,而请求服务ip不是。2 IP地址是私有的,请求地址是公网的)
-
除了浏览器配置,还可以通过修改注册表控制该协议:
- true表示允许网站以不安全的方式向任何网络端点发出请求。
- false表示在确定网站是否可以向网络端点发出请求时使用默认行为。
查看浏览器配置为default但是不跨域的设备注册表:
确实发现该配置被设置成true,问题解决。