网络请求避坑,私有网络请求(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("");三、服务器内部转发代码示例四、客户端重定向代码示例 一、服务器内部转发:…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...