PerformanceResourceTiming: свойство nextHopProtocol
Базовая Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2017 года.
Примечание: Эта функция доступна в Веб-воркерах.
Это nextHopProtocol свойство — строка, представляющая сетевой протокол, используемый для получения ресурса, идентифицированного по идентификатору протокола ALPN (RFC7301).
Если используется прокси и установлено туннельное соединение, это свойство возвращает идентификатор протокола ALPN туннелированного протокола. В противном случае свойство возвращает идентификатор протокола ALPN первого узла подключения к прокси.
Значение
nextHopProtocol свойство может принимать следующие значения:
- Строка, представляющая сетевой протокол, используемый для получения ресурса, как определено идентификатором протокола ALPN (RFC7301). Типичные значения:
"http/0.9""http/1.0""http/1.1""h2""h2c""h3"
- Пустая строка, если запрос к ресурсу является междоменным и заголовок ответа HTTP
Timing-Allow-Originне используется.
Примеры
Регистрация ресурсов, использующих ни HTTP/2, ни HTTP/3
nextHopProtocol свойство может использоваться для отображения ресурсов, которые не используют протоколы HTTP/2 или HTTP/3.
Пример с помощью PerformanceObserver, который сообщает о новых resource записях производительности, как только они регистрируются в временной шкале производительности браузера. Используйте buffered вариант для доступа к записям, созданным до создания наблюдателя.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const protocol = entry.nextHopProtocol;
if (protocol && !(protocol === "h2" || protocol === "h3")) {
console.log(`${entry.name} uses ${protocol}.`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Пример с использованием Performance.getEntriesByType(), который отображает только resource записи производительности, присутствующие в временной шкале производительности браузера на момент вызова этого метода:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
const protocol = entry.nextHopProtocol;
if (protocol && !(protocol === "h2" || protocol === "h3")) {
console.log(`${entry.name} uses ${protocol}.`);
}
});
Информация о протоколах междоменных сетей
Если значение nextHopProtocol свойства — пустая строка, ресурс может быть междоменным запросом. Чтобы отобразить информацию о протоколах междоменных сетей, нужно установить заголовок ответа HTTP Timing-Allow-Origin.
Например, чтобы предоставить https://developer.mozilla.org возможность видеть информацию о протоколах сети, ресурс должен отправлять:
Timing-Allow-Origin: https://developer.mozilla.org
Спецификации
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
nextHopProtocol |
61 | 17 | 45 | 48 | 11 | 61 | 45 | 45 | 11 | 8.0 | 61 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/nextHopProtocol