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

一、问题现象:

二、问题原因:

从 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 的请求。

图示:

相关推荐
无双_Joney6 分钟前
[更新迭代 - 1] Nestjs 在24年底更新了啥?(功能篇)
前端·后端·nestjs
在云端易逍遥8 分钟前
前端必学的 CSS Grid 布局体系
前端·css
ccnocare9 分钟前
选择文件夹路径
前端
艾小码9 分钟前
还在被超长列表卡到崩溃?3招搞定虚拟滚动,性能直接起飞!
前端·javascript·react.js
闰五月10 分钟前
JavaScript作用域与作用域链详解
前端·面试
泉城老铁14 分钟前
idea 优化卡顿
前端·后端·敏捷开发
前端康师傅14 分钟前
JavaScript 作用域常见问题及解决方案
前端·javascript
司宸15 分钟前
Prompt结构化输出:从入门到精通的系统指南
前端
我是日安16 分钟前
从零到一打造 Vue3 响应式系统 Day 9 - Effect:调度器实现与应用
前端·vue.js