背景
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 存放區回報問題。