前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这次不用再为调试环境的 HTTPS 协议发愁了

这次不用再为调试环境的 HTTPS 协议发愁了

作者头像
ConardLi
发布2023-12-14 19:06:39
2140
发布2023-12-14 19:06:39
举报
文章被收录于专栏:code秘密花园code秘密花园

Chrome 正在计划禁止从非安全网站发起的私有网络请求,目的是保护用户免受针对专用网络上的路由器和其他设备的跨站点请求伪造 (CSRF) 攻击。

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

Chrome 94 版本,开始阻止来自不安全上下文(非 HTTPS 协议)的公共网站的私有网络请求。

详细的策略更新可以看我之前写的这篇文章:Chrome 重大更新,将限制 localhost 访问?

但是这项更新却给广大开发者的本地开发和调试带来了很大的困扰,从私有设备(比如我们自己的本地调试环境)移到 HTTPS 协议还是挺困难的。

所以此项更新开始后,很多测试或者预发环境都开始报错,其实正是因为我们在这些环境中数据不安全的上下文(非 HTTPS 协议),但是却发起了私有网络请求(比如从测试环境发到本地调试服务器的请求)。

正是为了解决这个问题,Chrome 120 版本推出了一项新的权限提示。

首先,我们可以在发起 fetch 请求的 Options 选项中添加 targetAddressSpace ,就可以跳过上面提到的混合内容的检查。

代码语言:javascript
复制
fetch("http://router.localhost/conardli", {
  targetAddressSpace: "private",
});

注意:在混合内容检查中,本身像 http://localhost127.0.0.0/8::1/128 这样的本地 IP 地址被认为是潜在可信的,所以在这些情况下不需要添加 targetAddressSpace 也是可以请求成功的。

根据私有网络访问策略的限制,任何私有网络请求发起之前都会先发起预检请求。

具体可以看我之前写的这篇文章:Chrome 安全策略 - 私有网络控制(CORS-RFC1918)

预检请求会包含一个新的 Request Header : Access-Control-Request-Private-Network: true 。并且相应的响应也必须包含一个 Response HeaderAccess-Control-Allow-Private-Network: true

为了适应新的权限提示,此次更新又引入了两个新的 Response Header,而且是要求必须添加的:

  • Private-Network-Access-Name :一个可读的名称标识(与 ECMAScript 正则表达式 /^[a-z0-9_-.]+$/ 匹配的有效名称字符串,名称的最大长度为 248UTF-8 代码单元。)
  • Private-Network-Access-ID:设备的 MAC 地址(48 位值,以冒号分隔的 6 个十六进制字节表示)

例子:

代码语言:javascript
复制
Private-Network-Access-Name: "ConardLi Computer"
Private-Network-Access-ID: "17:17:17:17:17:0A"

注意:当私有网络权限提示绕过混合内容检查时,即使在预检警告模式下,也会强制执行预检。

可以在下面这个网址查看具体的 Demo 演示:https ://private-network-access-permission-test.glitch.me/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 code秘密花园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
私有网络
私有网络(Virtual Private Cloud,VPC)是基于腾讯云构建的专属云上网络空间,为您在腾讯云上的资源提供网络服务,不同私有网络间完全逻辑隔离。作为您在云上的专属网络空间,您可以通过软件定义网络的方式管理您的私有网络 VPC,实现 IP 地址、子网、路由表、网络 ACL 、流日志等功能的配置管理。私有网络还支持多种方式连接 Internet,如弹性 IP 、NAT 网关等。同时,您也可以通过 VPN 连接或专线接入连通腾讯云与您本地的数据中心,灵活构建混合云。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档