Подписанный HTTP Exchange (или «SXG») — это подмножество новой технологии под названием «Веб-пакеты », которая позволяет издателям безопасно делать свой контент переносимым, то есть доступным для распространения другими сторонами, сохраняя при этом целостность контента и атрибуцию. Переносной контент имеет множество преимуществ: от ускорения доставки контента до облегчения обмена контентом между пользователями и упрощения работы в автономном режиме.
Итак, как же работают подписанные HTTP-обмены? Эта технология позволяет издателю подписывать один HTTP-обмен (т. е. пару запрос/ответ) таким же образом, чтобы подписанный обмен мог обслуживаться с любого кэширующего сервера. Когда браузер загружает этот подписанный обмен, он может безопасно отображать URL-адрес издателя в адресной строке, поскольку подпись в обмене является достаточным доказательством того, что контент изначально поступил от источника издателя.
Это отделяет происхождение контента от того, кто его распространяет. Ваш контент может быть опубликован в Интернете, не полагаясь на конкретный сервер, соединение или хостинг! Мы воодушевлены возможными вариантами использования SXG, такими как:
Предварительная выборка с сохранением конфиденциальности. Хотя предварительная выборка ресурсов (например, по ссылке rel=prefetch ) для последующей навигации может сделать навигацию намного быстрее, она также имеет недостатки конфиденциальности. Например, упреждающая выборка ресурсов для навигации между источниками сообщит целевому сайту, что пользователь потенциально заинтересован в некоторой информации, даже если пользователь в конечном итоге не посетил сайт. С другой стороны, SXG позволяет предварительно извлекать ресурсы из разных источников из быстрого кэша, даже не обращаясь к целевому сайту, тем самым сообщая об интересе пользователя только в том случае, если и когда происходит навигация. Мы считаем, что это может быть полезно для сайтов, цель которых — перенаправить своих пользователей на другие сайты. В частности, Google планирует использовать это на страницах результатов поиска Google, чтобы улучшить URL-адреса AMP и ускорить клики по результатам поиска.
Преимущества CDN без передачи контроля над закрытым ключом вашего сертификата: контент, который внезапно стал популярным (например, ссылка на первую страницу reddit.com ), часто перегружает сайт, на котором обслуживается контент, и если сайт относительно небольшой, имеет тенденцию замедляться или даже временно становиться недоступным. Этой ситуации можно избежать, если делиться контентом с помощью быстрых и мощных серверов кэширования, а SXG делает это возможным без совместного использования ваших ключей TLS.
Пробуем подписанные биржи
Подписанные обмены доступны в Chrome 73 и более поздних версиях, а ранее они были доступны в качестве пробной версии.
Создание вашего SXG
Чтобы создать SXG для вашего источника (как издателя), вам понадобится ключ сертификата для подписи подписи, а сертификат должен иметь специальное расширение «CanSignHttpExchanges», чтобы его можно было обрабатывать как действительный SXG. По состоянию на ноябрь 2018 года DigiCert является единственным центром сертификации, поддерживающим это расширение, и вы можете запросить сертификат, работающий для SXG, на этой странице .
Получив сертификат SXG, вы сможете создавать свои собственные SXG, используя инструменты генератора ссылок, опубликованные на github.
Вы также можете просмотреть реальные файлы примеров SXG в репозитории кода Chrome (например, этот самый простой файл, созданный для простого текстового файла ). Обратите внимание, что они создаются в первую очередь для локального тестирования, поэтому не ожидайте, что в их подписи будут действительные сертификаты и временные метки.
Тестирование функции локально
Для создания SXG в целях тестирования вы можете создать самозаверяющий сертификат и включить chrome://flags/#allow-sxg-certs-without-extension
, чтобы Chrome обрабатывал SXG, созданные с использованием сертификата без специального расширения.
Код, подобный следующему, должен работать, если ваш сервер, сертификат и SXG настроены правильно:
<!-- prefetch the sample.sxg -->
<link rel="prefetch" href="https://your-site.com/sample.sxg" />
<!-- clicking the link below should make Chrome navigate to the inner
response of sample.sxg (and the prefetched SXG is used) -->
<a href="https://your-site.com/sample.sxg">Sample</a>
Обратите внимание, что SXG поддерживается только тегом привязки ( <a>
) и link rel=prefetch
в Chrome 73 и более поздних версиях. Также обратите внимание, что срок действия подписи ограничен 7 днями для каждой спецификации, поэтому срок действия подписанного содержимого истечет относительно быстро.
Предоставление обратной связи
Мы будем рады услышать ваши отзывы об этом эксперименте по адресу webpackage-dev@chromium.org . Вы также можете присоединиться к обсуждению спецификации или сообщить команде об ошибке Chrome . Ваш отзыв очень поможет процессу стандартизации, а также поможет нам решить проблемы реализации.