网络请求避坑,私有网络请求(Private Network Access)

前言

网络请求,大家肯定熟悉的不能再熟悉,网络请求失败,大家也肯定很熟悉。排查网络请求,也是我们必备的技能,对不,兄弟。

我坦言,最怕两种网络请求失败。

  1. 第一种:PC端模拟没有异常,到手机上 eruda, vconsole等网络请求信息空白。

    这种,就比较头大一点了,可能需要设置手机的网络代理 + 抓包工具 去排查。

  2. 第二种: Provisional headers are shown
    这种也是比较头疼的,虽然网络有很多文章讲了排查之道,很多时候不太好使,这一回,也不生效。

今天,出场的嘉宾比较特别:Private Network Access 翻译成中文,就是私有网络请求,开始正文吧。

起因经过

看要点:

  1. 本地(个人电脑)开发
  2. 启动一个web项目,页面是http协议,类似 http://localhost:9093
  3. webview 打开 CDN(源站阿里OSS)的一个动页面
  4. 活动页面请求一个开启了cors的局域网接口
    类似: http://192.168.19.87:11606/como/flags

浏览器信息: chrome x64 95

image.png

获取如下结果信息,并且爆出异常

网络请求列表信息:

image.png
网络请求详情信息:
image.png

然后,我就一顿操作,最初怀疑 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

失败告终

其他尝试

  1. 给本地web项目配置域名(修改localhost)失败
  2. 用360浏览器打开web项目,网络请求成功 成功
  3. 把请求copy as fetch,放到控制台执行 成功
  4. 本地启动一个网站模拟活动页面,执行相同的网络请求 成功

到这里,我就有点迷糊了,本地启动一个页面,调用相同的接口能成功? CDN上不能成功,难不成和CDN的策略有关系?

这就难办了,内心另外一个声音响起,应该还是和这个cors有关系, 受到CAUTION: provisional headers are shown" in Chrome debugger 启发,应该还是和某个选项有关?

于是我打开 chrome://flags/ 面板,搜索 cors

意外的收获

发现一个选项, Block insecure private network requests, 第一句的意思是 防止非安全上下文向更私有的 IP 地址发出子资源请求, 哦,虽然还不太懂,感觉很有用的样子。

image.png

办他,重启??

居然,好了,眼泪都要出来了,因为就这个事,放了好几天,近来觉得

心里这个坎过不去!
心里这个坎过不去!
心里这个坎过不去!

一个不小心过去了,没牵挂了,我要吃饭去了,别拦着我。

之前有提到,360浏览器并无此问题,那么chrome又是从哪个版本开始实现了这个特性。
经过查询google文献,最终确认是** 94**,也就是低于此版本的浏览器不会受到影响。

发布于2021年8月的Private Network Access update: Introducing a deprecation trial

根本原因 Private Network Access(私有网络请求)

image.png
先完全翻一下这个特性的描述:

防止非安全上下文向更私有的 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/

再补充一些知识 ,网络大致上我们分为

  1. local (本机)
  2. private(私有网络)
  3. public (公网)

私有程度
local > private > public

一图胜千文:

image.png

当然,更多相关知识,请参见 Private Network Access

三个问题

  1. 被 Private Network Access 策略拦截导致的请求,有没有发送到服务端
  2. 局域网向本地机器发送网络请求,能不能成功
  3. 除了关闭chrome的Block insecure private network requests特性外,还有没有别的方式解决此问题

小结

image.png
这个协议,是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 更新跨域规则,将对网站造成影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2012年认证杯SPSSPRO杯数学建模A题(第一阶段)蜘蛛网全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 A题 蜘蛛网 原题再现&#xff1a; 第一阶段问题   世界上生存着许多种类的蜘蛛&#xff0c;而其中的大部分种类都会通过结网来进行捕食。请你建立合理的数学模型&#xff0c;说明蜘蛛网织成怎样的结构才是最合适的。 整体求解过程概述(摘要…

【面试八股总结】传输控制协议TCP(三)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、TCP拥塞控制⭐ 1. 慢启动 – Slow Start 慢启动是指TCP连接刚建立&#xff0c;一点一点地提速&#xff0c;试探一下网络的承受能力&#xff0c;以免直接扰乱了网络通道的秩序。 慢启动算法&#xff1a; 初始拥塞窗口…

【EasyExcel】—— 实现excel动态表头设置、多个sheet

引入jar <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency>代码 public static void main(String[] args) {//选择存储地址String fileName "/User…

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Servi…

OSError: Can‘t load tokenizer for ‘bert-base-chinese‘

文章目录 OSError: Cant load tokenizer for bert-base-chinese1.问题描述2.解决办法 OSError: Can’t load tokenizer for ‘bert-base-chinese’ 1.问题描述 使用from_pretrained()函数从预训练的权重中加载模型时报错&#xff1a; OSError: Can’t load tokenizer for ‘…

axios 封装 http 请求详解

前言 Axios 是一个基于 Promise 的 HTTP 库&#xff0c;它的概念及使用方法本文不过多赘述&#xff0c;请参考&#xff1a;axios传送门 本文重点讲述下在项目中是如何利用 axios 封装 http 请求。 一、预设全局变量 在 /const/preset.js 中配置预先设置一些全局变量 window.…

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

Java项目:85 springboot智能物流管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员和用户两个角色。 用户功能有项目预定管理&#xff0c;产品购买管理&#xff0c;会员充值管理&#xff0c;余额查询管理。…

vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件&#xff0c;需先安装 向下滑动前 向下滑动后&#xff08;改变了logo 字体 背景颜色&#xff09; <script lang"ts" setup> import router from /router; import { ArrowDown } from element-plus/icons-vue import { ref, …

VScode debug python(服务器)

方法一&#xff1a; 创建launch.json文件&#xff1a; launch.json文件地址&#xff1a; launch.json文件内容&#xff1a; {"version": "0.2.0", //指定了配置文件的版本"configurations": [{"name": "Python: Current File&…

基于kmeans的聚类微博舆情分析系统

第一章绪论 1.1研究背景 如今在我们的生活与生产的每个角落都可以见到数据与信息的身影。自从上十世纪八十年代的中后期开始&#xff0c;我们使用的互联网技术已经开始快速发展&#xff0c;近些年来云计算、大数据和物联网等与互联网有相领域的发展让互联网技术达到了史无前例…

159 Linux C++ 通讯架构实战14,epoll 函数代码实战

ngx_epoll_init函数的调用 //&#xff08;3.2&#xff09;ngx_epoll_init函数的调用&#xff08;要在子进程中执行&#xff09; //四章&#xff0c;四节 project1.cpp&#xff1a;nginx中创建worker子进程&#xff1b; //nginx中创建worker子进程 //官方nginx ,一个…