网络请求避坑,私有网络请求(Private Network Access)
前言
网络请求,大家肯定熟悉的不能再熟悉,网络请求失败,大家也肯定很熟悉。排查网络请求,也是我们必备的技能,对不,兄弟。
我坦言,最怕两种网络请求失败。
-
第一种:PC端模拟没有异常,到手机上
eruda,vconsole等网络请求信息空白。这种,就比较头大一点了,可能需要设置手机的网络代理 + 抓包工具 去排查。
-
第二种:
Provisional headers are shown
这种也是比较头疼的,虽然网络有很多文章讲了排查之道,很多时候不太好使,这一回,也不生效。
今天,出场的嘉宾比较特别:Private Network Access 翻译成中文,就是私有网络请求,开始正文吧。
起因经过
看要点:
- 本地(个人电脑)开发
- 启动一个web项目,页面是http协议,类似 http://localhost:9093
- webview 打开 CDN(源站阿里OSS)的一个动页面
- 活动页面请求一个开启了cors的局域网接口
类似: http://192.168.19.87:11606/como/flags
浏览器信息: chrome x64 95

获取如下结果信息,并且爆出异常
网络请求列表信息:

网络请求详情信息:

然后,我就一顿操作,最初怀疑 Referrer Policy 和这个所谓的 Provisional headers are shown, 经历下面得操作。
修改h5活动refer策略
<meta name="referrer" content="no-referrer">
https://www.jianshu.com/p/26512475501a
失败告终
关闭 chrome://flags/#site-isolation-trial-opt-out 等等
CAUTION: provisional headers are shown" in Chrome debugger
失败告终
其他尝试
- 给本地web项目配置域名(修改localhost)失败
- 用360浏览器打开web项目,网络请求成功 成功
- 把请求copy as fetch,放到控制台执行 成功
- 本地启动一个网站模拟活动页面,执行相同的网络请求 成功
到这里,我就有点迷糊了,本地启动一个页面,调用相同的接口能成功? CDN上不能成功,难不成和CDN的策略有关系?
这就难办了,内心另外一个声音响起,应该还是和这个cors有关系, 受到CAUTION: provisional headers are shown" in Chrome debugger 启发,应该还是和某个选项有关?
于是我打开 chrome://flags/ 面板,搜索 cors。
意外的收获
发现一个选项, Block insecure private network requests, 第一句的意思是 防止非安全上下文向更私有的 IP 地址发出子资源请求, 哦,虽然还不太懂,感觉很有用的样子。

办他,重启??
居然,好了,眼泪都要出来了,因为就这个事,放了好几天,近来觉得
心里这个坎过不去!
心里这个坎过不去!
心里这个坎过不去!
一个不小心过去了,没牵挂了,我要吃饭去了,别拦着我。
之前有提到,360浏览器并无此问题,那么chrome又是从哪个版本开始实现了这个特性。
经过查询google文献,最终确认是** 94**,也就是低于此版本的浏览器不会受到影响。
发布于2021年8月的Private Network Access update: Introducing a deprecation trial
根本原因 Private Network Access(私有网络请求)

先完全翻一下这个特性的描述:
防止非安全上下文向更私有的 IP 地址发出子资源请求。如果1) ip1是本地主机,而 ip2不是,或者2) ip1是私有的,而 ip2是公共的,那么 IP 地址 ip1比 ip2更私有。这是全面实施 cors-rfc1918的第一步: https://wicg.github.io/cors-rfc1918
顿悟, 防止向更私有的ip地址发出资源请求。
活动页面在CDN,属于公网
网络请求http://192.168.19.87:11606/como/flags, 属于局域网
公网向局域网请求,就是向私有的网络请求, 所以被 ban 了。
打开特性说明中的链接,
跳转到协议地址: https://wicg.github.io/private-network-access/
再补充一些知识 ,网络大致上我们分为
- local (本机)
- private(私有网络)
- public (公网)
私有程度
local > private > public
一图胜千文:

当然,更多相关知识,请参见 Private Network Access
三个问题
- 被 Private Network Access 策略拦截导致的请求,有没有发送到服务端
- 局域网向本地机器发送网络请求,能不能成功
- 除了关闭chrome的
Block insecure private network requests特性外,还有没有别的方式解决此问题
小结

这个协议,是2021年6月份起草的,不得不说chrome你是真的牛X。
这也就能解释,为什么 360浏览器能网络求情能够成功。
私有网络请求,确实从一定程度保护了安全。
引用
“CAUTION: provisional headers are shown” in Chrome debugger
Private Network Access
踩了Chrome85修改referer策略的坑
Preflight request
chrome 更新跨域规则,将对网站造成影响
](https://developer.mozilla.org/zh-CN/docs/Glossary/Preflight_request)
chrome 更新跨域规则,将对网站造成影响
相关文章:
网络请求避坑,私有网络请求(Private Network Access)
前言 网络请求,大家肯定熟悉的不能再熟悉,网络请求失败,大家也肯定很熟悉。排查网络请求,也是我们必备的技能,对不,兄弟。 我坦言,最怕两种网络请求失败。 第一种:PC端模拟没有异常…...
AVL树和红黑树
AVL树和红黑树 AVL树理论代码实现 红黑树理论代码实现 AVL树 理论 我们知道二叉搜索树拥有极高的搜索效率,但当二叉搜索树退化成单支时,其查找效率会大幅下降,因此我们需要避免其出现单支的情况,并且尽可能让其接近满二叉树。解…...
多线程入门
多线程 Thread 现在的Thread中的run方法,已经被实现了,所以已经不需要实现了 操作 继承 extends Thread方法 重写run方法 start() 案例 public class ThreadTest extends Thread{public void run() {for (int i 0; i < 100; i) {System.out.…...
#!/bin/sh和#!/bin/bash的区别
前言:都是脚本文件中的 shebang(也称为 hashbang)行,用于指定脚本文件的解释器 解释: #!/bin/sh:这行告诉操作系统使用 /bin/sh 这个解释器来执行脚本。/bin/sh 是一个标准的 Unix Shell,通常是…...
腾讯云(CVM)托管进行权限维持
前言 刚好看到一个师傅分享了一个阿里云ECS实战攻防,然后想到了同样利用腾讯云CVM的托管亦可实现在实战攻防中的权限维持。 简介 腾讯云自动化助手(TencentCloud Automation Tools,TAT)是一个原生运维部署工具,它可…...
STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)
文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 搭建完成开发STM32开发环境之后,开始GPIO…...
DS3231SN
这份文件是关于DS3231SN芯片的数据手册,由Maxim Integrated公司生产。DS3231SN是一款高精度的I2C接口集成实时时钟(RTC)/温度补偿晶体振荡器(TCXO)/晶体的芯片。以下是该芯片的核心内容概述: 产品概述&…...
tsconfig.json文件翻译
原文件 {"compilerOptions": {/* Visit https://aka.ms/tsconfig to read more about this file *//* Projects */// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects.…...
树状数组学习笔记
树状数组 拜读了大佬的讲解博文(树状数组(详细分析应用),看不懂打死我!),写一篇Python版的笔记巩固消化,附带蓝桥杯历年真题作为例题演示 一、作用 用于快速读取列表中 某个区间内所有元素的和 实现单点修改ÿ…...
【bugfix】如何解决svg到线上显示空白或者svg的viewBox为空
svgo的默认机制是当width和height和viewbox一样会删除viewbox,这都是为了svg的压缩做的,详情可以看issue中的讨论,我们可以通过更改babel的配置来解决 https://github.com/svg/svgo/issues/1128 https://github.com/ant-design/ant-design-we…...
docker基础学习指令
文章目录 [toc] docker基础常用指令一、docker 基础命令二、docker 镜像命令1. docker images2. docker search3. docker pull4. docker system df5. docker rmi1. Commit 命令 三、 docker 容器命令1. docker run2. docker logs3. docker top4. docker inspect5. docker cp6. …...
回溯大学生活
回顾一下大学四年 bg:湖南大学 20级计科,成绩60%,无考研考公打算 四年之前,怀着激动的心情来到了大学校园,经过了太久的压抑终于迎来了高中老师口中的美好的大学生活,然而呢事实并非如此。恋爱呢…...
Android Fence机制
Android Fence机制 Android中的GraphicBuffer同步机制-Fence (最全最详细,推荐) AndroidQ 图形系统(5)Fence机制简介 Android P 图形显示系统(十一) BufferQueue(二)...
sa-token非Web上下文无法获取Request
0x02 非Web上下文无法获取Request 问题定位 在我们使用sa-token安全框架的时候,有时候会提示:**SaTokenException:非Web上下文无法获取Request**** 错误截图: 在官方网站中,查看常见问题排查: 非Web上下文无法获取…...
tomcat 常见优化方案
tomcat作为Web服务器,它的处理性能直接关系到用户体验,下面是几种常见的优化措施: 对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存 服务器所能提供CPU、内存、硬盘的性能…...
前端导出文本内容为csv文件,excel乱码
原因:编码格式问题,需要改为utf-8 bom // Create blob with utf8-bom 编码 const createBlobWithBOM(data, mimeType)> {const bom [0xEF, 0xBB, 0xBF];const bomArray new Uint8Array(bom);const dataArray new TextEncoder().encode(data);const…...
36---USB HUB电路设计
视频链接 USB HUB电路设计01_哔哩哔哩_bilibili USB HUB 电路设计 1、USB HUB基本介绍 USB Hub,指的是一种可以将一个USB接口扩展为多个,并可以使这些接口同时使用的装置。 Hub也是大家常说的集线器,它使用星型拓扑结构连接多个USB接口设…...
FPGA在深度学习领域的应用的优势
FPGA(Field-Programmable Gate Array)是一种可编程逻辑芯片,可以根据需要重新配置其内部的逻辑电路和功能。在深度学习领域,FPGA被广泛用于加速模型训练和推理任务。 首先,FPGA可以提供高度定制化的计算架构ÿ…...
Windows Edge 兼容性问题修复 基本解决方案
Windows Edge 浏览器兼容性问题可能源于多个方面,以下是一些常见的问题及其处理结果: 插件或扩展冲突:某些第三方插件或扩展可能与Edge浏览器不兼容,导致崩溃或运行异常。处理结果为,尝试禁用所有插件和扩展ÿ…...
【Servlet】服务器内部转发以及客户端重定向
文章目录 一、服务器内部转发:request.getRequestDispatcher("...").forward(request, response);二、客户端重定向:response.sendRedirect("");三、服务器内部转发代码示例四、客户端重定向代码示例 一、服务器内部转发:…...
Free List Allocator实现原理:memory-allocators中的通用内存分配器
Free List Allocator实现原理:memory-allocators中的通用内存分配器 【免费下载链接】memory-allocators Custom memory allocators in C to improve the performance of dynamic memory allocation 项目地址: https://gitcode.com/gh_mirrors/me/memory-allocato…...
基于Kubernetes Operator的企业级区块链网络自动化部署实践
1. 项目概述:企业级区块链的云原生部署方案如果你正在寻找一个能够将企业级区块链网络快速、稳定地部署到Kubernetes集群上的成熟方案,那么ConsenSys开源的quorum-kubernetes项目绝对值得你花时间深入研究。这个项目不是一个简单的概念验证,而…...
从零学会基础算法前缀和差分:数组区间求和离散化基础
首先祝大家劳动节快乐!开学两个月来学的东西不多,主要掌握了两块内容:前缀和/差分/离散化 和 数学基础。本文是第一篇,重点整理前缀和相关内容。 编程语言:C 排版助手:AI一、数组的三个简化技巧 1. 前缀和 …...
DSP+FPGA异构架构在实时信号处理中的应用与优化
1. 实时信号处理系统架构解析在工业自动化、医疗影像和通信系统中,对信号处理实时性要求极高的场景比比皆是。传统纯软件方案往往受限于CPU的串行处理特性,难以满足严格的时序要求。这正是DSPFPGA异构架构大显身手的领域——我曾参与过多个类似项目&…...
【Portal实战指南】STEP 7 Basic许可证丢失排查与一键修复
1. 问题现象与紧急处理 当你满心欢喜地打开TIA Portal准备开始一天的工作,突然弹出一个令人窒息的提示框:"找不到许可证STEP 7 Basic"。这种情况我遇到过不下十次,每次都能让工程师血压瞬间飙升。别慌,我们先来快速判断…...
【信息科学与工程学】【财务管理】 第二十三篇 ICT行业商业逻辑分析框架03
136. 硅光子集成芯片的激光器外延片 行业代码 行业名称 行业级别 产品/服务 商业逻辑核心 投资者类型与代表公司/机构 外部关系类型与关联公司 销售与买卖经营 供应链经营 利益/利润设计/资源绑定/信息宣传 分销商/代理商/关系节点 销售策略、打法与复杂关系网络 3…...
X-TRACK开源GPS自行车码表终极指南:从硬件组装到软件配置的完整教程
X-TRACK开源GPS自行车码表终极指南:从硬件组装到软件配置的完整教程 【免费下载链接】X-TRACK A GPS bicycle speedometer that supports offline maps and track recording 项目地址: https://gitcode.com/gh_mirrors/xt/X-TRACK X-TRACK是一款功能强大的开…...
dcm2niix终极指南:免费高效的医学影像格式转换神器
dcm2niix终极指南:免费高效的医学影像格式转换神器 【免费下载链接】dcm2niix dcm2nii DICOM to NIfTI converter: compiled versions available from NITRC 项目地址: https://gitcode.com/gh_mirrors/dc/dcm2niix dcm2niix是一款功能强大的开源医学影像转换…...
不想注册Nvidia账户?手把手教你修改app.js文件,让GeForce Experience直接进主界面
免登录畅享GeForce Experience:技术流修改指南 每次打开GeForce Experience都要面对那个恼人的登录窗口?作为资深PC玩家,我完全理解这种困扰。重装系统后最烦人的就是各种强制登录,尤其是当我们只想快速使用屏幕录制或游戏优化功能…...
5分钟在Mac上实现专业级无线直播:DistroAV NDI插件终极配置指南
5分钟在Mac上实现专业级无线直播:DistroAV NDI插件终极配置指南 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 还在为Mac电脑上的多机位直播设置而烦恼吗&am…...
