背景
Chrome 94 禁止通过非安全的公共网站访问专用网络。正在进行的“从不安全情境访问专用网络”的试用版即将弃用,这让在将受影响的网站迁移到 HTTPS 时面临挑战。一个常见问题是,将专用设备迁移到 HTTPS 的难度较大,导致混合内容检查违规。
为了解决上述问题,Chrome 120 在源试用中提供了新的权限提示
将权限提示作为新选项
通过将新的 targetAddressSpace
属性添加为提取选项,请求将能够跳过混合内容检查。
示例:
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
根据专用网络访问:引入预检查,任何专用网络请求都将先发出预检查请求。此预检请求将包含一个新标头 Access-Control-Request-Private-Network: true
,相应的响应必须包含标头 Access-Control-Allow-Private-Network: true
。
为了适应新的权限提示,我们要求设备添加两个新的响应标头:Private-Network-Access-Name
和 Private-Network-Access-ID
。
Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>
示例:
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
Private-Network-Access-ID
:一个 48 位值,表示为 6 个以英文冒号分隔的十六进制字节。Private-Network-Access-Name
:一个有效的名称(字符串),与 ECMAScript 正则表达式 /^[a-z0-9_-.]+$/
匹配。名称的长度上限为 248 个 UTF-8 代码单元。
演示
您可以访问 https://private-network-access-permission-test.glitch.me/ 查看演示。
注册源代码试用
为确保专用网络访问权限提示能够帮助开发者针对专用网络访问采用安全上下文限制,我们将以源试用的形式在 Chrome 版本 120 到 122 中提供这些功能。
注册源试用,以便您的网站使用权限提示:
- 为您的来源请求令牌。
- 您可以通过以下任一方式使用令牌:
- 在 HTML 中:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- 在您的 JavaScript 中:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- 在 HTTP 标头中:
text Origin-Trial: TOKEN_GOES_HERE
- 在 HTML 中:
如果您对此功能有任何反馈或建议,请在 GitHub 代码库中提交问题。