不安全公共网站的对私有网络的请求

一、问题现象:

二、问题原因:

从 Chrome 94 开始,禁止公共非安全上下文(广义上说,不通过 HTTPS 或来自私有 IP 地址的网站)向私有网络发出请求

受影响的请求包括

从公共网络到私有网络的请求

从专用网络到本地网络的请求

从公共网络到本地网络的请求

chrome版本更新历史

对应chrome配置:

Block insecure private network requests

官方链接

developer.chrome.com/blog/privat...

web.dev/cors-rfc191...

引入预检声明developer.chrome.com/blog/privat...

三、问题定位

1、检查代理

关闭本地所有代理,出现改问题

打开本地代理,改问题消失,可以推测与网络环境有关

2、关闭代理的情况下检查本地配置

本地host文件中配置了域名对应ip,这个ip是私有ip,访问该ip时符合从公共网络到私有网络的请求,被chrome规则拦截

3、问题解决

修改本地host配置

四、判断网站是否受到影响

从 Chrome 98 开始,如果检测到私有网络请求,则会在其前面发送预检请求。如果此预检请求失败,仍会发送最终请求,但会在 DevTools 问题面板中显示警告。

五、类似问题官方推荐解决方案:

解决方案1:

注册弃用试用版

注册弃用试用版,并配置 服务器以Origin-Trial: $token在响应上附加特定于源的标头

缺点:

该方案最多使用到chrmoe102

解决方案2:

启用策略

更新客户端策略重新启用已弃用的功能

缺点

需要在用户客户端进行操作

解决方案3:

升级为HTTPS

通过 HTTPS 为私有网站提供服务的主要问题是公钥基础设施证书颁发机构 (PKI CA) 仅向具有公共域名的网站提供 TLS 证书。要解决此问题:

  1. 注册一个公共域名(例如intranet.example)并发布将该域名指向您选择的公共服务器的 DNS 记录。
  2. 获取 TLS 证书intranet.example。
  3. 在您的专用网络中,配置 DNS 以解析intranet.example到目标服务器的专用 IP 地址。
  4. 配置您的私人服务器以将 TLS 证书用于intranet.example. 这允许您的用户访问位于 的私有服务器intranet.example。

优点

chrome推荐的面向未来的解决方案

缺点:

1、需要申请和购买证书,

2、需要将现有http服务升级至https

解决方案4

反向嵌入

从私有服务器提供应用程序的骨架,然后从公共服务器(例如 CDN)获取其所有子资源(例如脚本或图像)

缺点:

1、需要重新搭建部署的网络环境

2、chrome声明未来可能会改变

解决方案5

CORS 预检请求

developer.chrome.com/blog/privat...

chrome98中专用网络访问的新增功能

为预检请求引入了一对新的请求和响应标头:

  • Access-Control-Request-Private-Network: true在所有 PNA 预检请求上设置
  • Access-Control-Allow-Private-Network: true必须在所有 PNA 预检响应上设置

无论请求方法和模式如何,都会为所有专用网络请求发送 PNA 的预检请求。它们在cors模式以及no-cors所有其他模式中的请求之前发送。这是因为所有私网请求都可以用于 CSRF 攻击,无论请求模式如何,以及响应内容是否对发起者可用

问题:

预检请求模式目前已被回滚,暂时无法使用

备注:

专用网络请求是目标服务器的 IP 地址比请求发起者获取的 IP 地址更私密的请求。例如,从公共网站 ( example.com) 到私人网站 ( router.local) 的请求,或从私人网站到 localhost 的请求。

图示:

相关推荐
星栈4 分钟前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
用户987409238879 分钟前
用 Remotion + edge-tts 打造中文教学视频全自动流水线
前端
风骏时光牛马9 分钟前
Less前端工程化实战:变量混合器与项目样式分层落地
前端
假如让我当三天老蒯13 分钟前
Options API(选项式 API) 和 Composition API(组合式 API)
前端·vue.js·面试
SameX14 分钟前
iOS 独立开发实践:用 MapKit + 像素渲染实现 Citywalk 轨迹地图 App「雁过留痕」
前端
skyey30 分钟前
页面加载时,深色模式闪白的问题解决
前端
IT_陈寒41 分钟前
Java 并行流把我坑惨了,这6小时加班值了
前端·人工智能·后端
anOnion10 小时前
构建无障碍组件之Menu Button pattern
前端·html·交互设计
用户479492835691511 小时前
claude Fable用不了?把Gpt 5.5pro接到你的claude code里
前端·后端
zhangxingchao13 小时前
Kotlin常用的Flow 操作符整理
前端