Фон
В 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/ .
Зарегистрируйтесь для участия в пробной версии Origin
Чтобы гарантировать, что запрос разрешения на доступ к частной сети поможет разработчикам применять ограничения безопасного контекста для доступа к частной сети, мы делаем их доступными в Chrome с версии 120 по 122 в качестве пробной версии.
Зарегистрируйтесь для участия в пробной версии Origin, чтобы ваш веб-сайт мог использовать запрос разрешения:
- Запросите токен для вашего происхождения.
- Используйте токен одним из следующих способов:
- В вашем 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 .