发布时间:2025 年 6 月 9 日
按照《本地网络访问规范草案》的规定,Chrome 将为与用户的本地网络建立连接的网站添加新的权限提示。目的是保护用户免受针对专用网络上的路由器和其他设备的跨站请求伪造 (CSRF) 攻击,并降低网站使用这些请求来获取用户本地网络指纹的可能性。
为了了解这项变更对 Web 生态系统的影响,Chrome 团队希望从构建依赖于与用户的本地网络或用户机器上本地运行的软件建立连接的 Web 应用的开发者那里获得反馈。从 Chrome 138 开始,您可以前往 chrome://flags/#local-network-access-check
并将标志设置为“已启用(屏蔽)”,以选择启用这些新限制。
什么是本地网络访问权限?
本地网络访问限制了网站向用户本地网络上的服务器(包括在用户计算机上本地运行的服务器)发送请求的功能,要求用户授予网站权限,然后才能发出此类请求。请求此权限的功能仅限于安全上下文。

许多其他平台(例如 Android、iOS 和 MacOS)都具有本地网络访问权限。例如,您在设置新的 Google TV 和 Chromecast 设备时,可能已向 Google Home 应用授予访问本地网络的权限。
哪些类型的请求会受到影响?
对于本地网络访问的第一个里程碑,我们将“本地网络请求”定义为从公共网络到本地网络或环回目的地的任何请求。
本地网络是指解析到 IPv4 中 RFC1918 第 3 节中定义的专用地址空间的任何目的地(例如192.168.0.0/16
),IPv4 映射的 IPv6 地址(其中映射的 IPv4 地址本身是专用地址),或 ::1/128
、2000::/3
和 ff00::/8
子网之外的 IPv6 地址。
环回是指解析为 IPv4 的 RFC1122 第 3.2.1.3 节中定义的“环回”空间 (127.0.0.0/8
)、IPv4 的 RFC3927 第 3 节中定义的“链路本地”空间 (169.254.0.0/16
)、IPv6 的 RFC4193 第 3 节中定义的“唯一本地地址”前缀 (fcc00::/7
),或 IPv6 的 RFC4291 第 2.5.6 节中定义的“链路本地”前缀 (fe80::/10
) 的任何目标。
公共网络是指任何其他目的地。
由于本地网络访问权限仅限于安全上下文,并且很难将本地网络设备迁移到 HTTPS,因此如果 Chrome 在解析目标之前知道请求将发送到本地网络,则受权限控制的本地网络请求现在将不受混合内容检查的约束。如果满足以下条件,Chrome 会知道请求要发送到本地网络:
- 请求主机名是私有 IP 字面量(例如
192.168.0.1
)。 - 请求主机名是
.local
网域。 fetch()
调用带有选项targetAddressSpace: "local".
的注解
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");
// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");
// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");
// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
targetAddressSpace: "local",
});
Chrome 中的变化
Chrome 138
我们已推出本地网络访问权限功能的初始版本,您可以在 Chrome 138 中选择接受测试。用户可以将 chrome://flags#local-network-access-check
设置为“已启用(屏蔽)”,以启用新的权限提示。这支持针对使用 JavaScript fetch()
API、子资源加载和子框架导航发起的请求触发“本地网络访问权限”权限提示。
您可以访问演示网站 https://local-network-access-testing.glitch.me/,以触发不同形式的本地网络请求。
已知问题和限制
- 新权限提示目前仅在桌面版 Chrome 中实现。 我们正在积极将其移植到 Android Chrome。(在 crbug.com/400455013 中跟踪。)
- WebSocket (crbug.com/421156866)、WebTransport (crbug.com/421216834) 和 WebRTC (crbug.com/421223919) 与本地网络的连接尚未受 LNA 权限控制。
- 来自服务工件的本地网络请求目前要求服务工件的来源之前已获得本地网络访问权限。
- 如果您的应用通过服务工件发出本地网络请求,您目前需要从应用中单独触发本地网络请求,才能触发权限提示。(我们正在研究一种方法,让工人能够在有有效文档可用时触发权限提示 - 请参阅 crbug.com/404887282。)
Chrome 139 及更高版本
我们打算尽快推出本地网络访问权限功能。我们知道,某些网站可能需要额外的时间才能更新为包含本地网络访问注释,因此在默认启用本地网络访问之前,我们将添加来源试用,以便网站暂时停用安全情境要求。这应该能为开发者提供更清晰的迁移路径,尤其是在您依赖通过 HTTP 访问本地网络资源的情况下(因为如果在尚不支持本地网络访问混合内容豁免的浏览器中通过 HTTPS 页面发出请求,这些请求会被视为混合内容而被屏蔽)。
我们还将添加一项 Chrome 企业政策,用于控制哪些网站可以发出本地网络请求,哪些网站不能(预先向这些网站授予或拒绝授予权限)。这样,受管理的 Chrome 安装(例如企业设置中的安装)便可避免针对已知预期用例显示警告,或者进一步锁定并阻止网站请求此权限。
我们计划继续将本地网络访问权限与可向本地网络发送请求的其他功能集成。例如,我们计划很快为 WebSocket、WebTransport 和 WebRTC 连接提供本地网络访问。
随着我们在 Chrome 中全面推出本地网络访问功能的日期越来越近,我们会分享更多信息。
期待反馈
我们之前就专用网络访问权限开发征求过反馈,这些反馈对我们制定新的本地网络访问权限方法非常有帮助。我们再次感谢多年来参与该计划的所有人。
如果您开发或使用的是依赖于与用户的本地网络或在用户机器上本地运行的软件建立连接的网站,Chrome 团队希望您提供反馈和使用情形。您可以采取以下两种做法来帮助我们:
- 前往
chrome://flags#local-network-access-check
,将标志设置为“已启用(屏蔽)”,然后检查您的网站是否正确触发了新权限提示(并在您授予权限后正常运行)。 - 如果您遇到任何问题或有任何反馈,请在 Chromium 问题跟踪器或我们的 LNA 说明 GitHub 代码库中提交问题。 Chrome 团队非常期待收到您的反馈。