2026 приёмка фронтенда на удалённом Mac:
HTTP/3, QUIC и Alt-Svc — таблица Safari и Chromium и три шага
Для кого: команды, которые включают HTTP/3 поверх QUIC за CDN или на origin. Если стейджинг крутится только в Chromium на Linux, вы не ловите особенности кэша Alt-Svc и тайминги UDP у пользователей Safari. Ниже — матрица, три шага приёмки и список команд. Дополнительно: деплой и проверка в Safari, HAR и trace для тикетов, FAQ Web Inspector и удалённая отладка.
01 Почему внедрение QUIC проваливает приёмку
HTTP/3 переносит основной обмен на QUIC по UDP. Типичный регресс — частичное включение: в панели CDN видно h3, но Alt-Svc указывает на путь, где UDP режут middlebox’ы, сертификат не совпадает с рекламируемым именем, а липкие сессии на бэкенде ломаются при смене транспорта. Для фронтенда заголовок Alt-Svc — часть публичного контракта наравне с CORS, CSP и Cache-Control: его нельзя «докрутить потом» без риска зависнуть на старом TTL.
Если ферма QA — только headless Chromium, вы не воспроизводите те же задержки первого QUIC-проба и политики кэша, что у клиентов на сетях Apple. Приёмка на удалённом Mac с парой браузеров и терминалом закрывает разрыв между «curl показал h3» и «Safari в гостевой Wi‑Fi стабильно грузит приложение».
Отдельно стоит помнить про HTTPS DNS RR и политики CDN: иногда HTTP/3 включают только на одном POP, а заголовок Alt-Svc отдаётся глобально — тогда часть пользователей так и остаётся на HTTP/2 без явной ошибки в UI. Именно поэтому в чек-листе рядом с браузером должны жить команды из следующего раздела и короткий сценарий «холодный старт → повтор после TTL → смена сети», а не один скриншот колонки «Protocol».
02 Таблица: Safari и Chromium
Перечитывайте строки после любой правки DNS, CDN или TLS. Оба движка в актуальных стабильных ветках говорят по HTTP/3; расхождения — в моменте первой попытки QUIC и в сигналах инструментов, а не в «включён / выключен». Для фронтенда важно также согласовать с бэкендом поведение длинных запросов и стриминга: мультиплексирование в QUIC иное, чем в HTTP/2, и ошибки таймаута иногда проявляются только под нагрузкой или на конкретном маршруте API.
| Тема | Safari / WebKit | Chromium |
|---|---|---|
| Первый полёт | Часто сначала HTTP/2, затем h3 по Alt-Svc или HTTPS RR; кэш соединений WebKit влияет на момент QUIC-проба. |
Похожая схема; подробные ретраи QUIC виднее в net://log, чем только в колонке DevTools. |
| Разбор Alt-Svc | Учитываются ma= и authority; слишком длинный TTL после ошибочной ротации выглядит как «застряли на HTTP/2». |
Аналогично; кривая строка authority часто очевиднее в netlog, пока UI всё ещё показывает h2. |
| UDP и middlebox | Каптив-портал и фильтрация UDP ломают QUIC; Safari может тихо откатиться — нужен захват или метрика. | Та же боль; headless удобен для CI, но не заменяет «живой» Wi‑Fi отеля или офиса. |
| Сигнал в DevTools | Web Inspector по ресурсу; при подозрении на UDP — захват пакетов на macOS. | DevTools + netlog; по возможности коррелируйте с request ID на edge CDN. |
| 0-RTT / early data | Связано со стеком TLS Apple; для POST и мутаций считайте early data небезопасным, пока явно не докажете обратное. | Больше переключателей; риски реплея проявляются «рваными» 4xx/5xx, а не простым отключением QUIC. |
Если стейджинг и прод ведут себя по-разному, сначала проверьте split routing и разные цепочки сертификатов, прежде чем обвинять WebKit.
03 Три шага перед релизом
- Заморозить контракт на проводе. Запишите канонические хосты, где терминируется QUIC (edge или origin), ожидаемый кортеж
Alt-Svc(h3="authority:port"; ma=...), минимальные версии TLS и нужен ли обязательный HTTP/2 для API-клиентов без QUIC. - Проверить оба семейства на реальном Apple Silicon. Арендуйте слот удалённого Mac, откройте одну и ту же сборку стейджинга в Safari и Chromium с очищенным кэшем, прогоните логин, загрузки и оболочку service worker, затем перезагрузите страницу после ожидания дольше
ma, чтобы убедиться в повторном обнаружении сервиса. - Прикрепить машинные доказательства. Сохраните обезличенные HAR или выдержки netlog, расшифровки
curl -vи заметки по UDP-захвату в задаче релиза, чтобы дежурный мог откатить или продолжить без пересказа «с моего ноутбука работало».
Запускайте этот блок вместе с проверкой бандла и выкладки: транспорт — часть контракта с пользователем.
04 Команды и идеи для захвата трафика
Выполняйте в той же Wi‑Fi-профиле, что и ручное QA; вырежьте секреты из логов. Артефакты оформляйте по гигиене из статьи про HAR и trace.
- ▸Зонд ALPN по TLS:
openssl s_client -connect ХОСТ:443 -servername ХОСТ -alpn h2,h3— в выводе должна быть строкаALPN protocolсh3, если edge реально предлагает HTTP/3. - ▸Заголовки ответа:
curl -sSIv --http2 https://ХОСТ/, затем сборка curl с QUIC:curl --http3-only -sSIv https://ХОСТ/(если нет флага, попробуйте--http3; сверьтеcurl -Vна наличие nghttp3/quiche). - ▸Сравнить h2 и h3 по времени:
curl -w '\nhttp_code:%{http_code} time_namelookup:%{time_namelookup} time_connect:%{time_connect} time_appconnect:%{time_appconnect} time_starttransfer:%{time_starttransfer} time_total:%{time_total}\n' -o /dev/null -sS 'URL'— по два прогона на протокол после сброса кэша. - ▸Проверка UDP:
sudo tcpdump -ni en0 host IP_ОРИДЖИНА and udp port 443во время загрузки страницы — если браузер заявляет HTTP/3, а пакетов QUIC нет, эскалируйте сеть или CDN. - ▸Safari: водопад в Web Inspector плюс системный захват (например, Wireless Diagnostics) при упорных обрывах UDP; для удалённой цели см. FAQ по Inspector.
- ▸Chromium:
chrome --log-net-log=netlog.jsonс последующим просмотром вnetlog_viewer— фильтры по QUIC и Alt-Svc ускоряют разбор инцидентов.
Называйте отказ QUIC «мягким» только если метрики показывают, что пользователь не застрял в циклах повторов на HTTP/2.
05 FAQ
Достаточно ли одного Alt-Svc для «включения» HTTP/3?
Нет: заголовок лишь рекламирует, куда попробовать h3. Клиент обязан пройти полный путь QUIC и проверить сертификат. Неверный ma, SNI или фильтр UDP дают тихий откат — измеряйте долю h3 по RUM или по логам edge.
Почему Safari и Chromium расходятся на стейджинге?
Разные кэши, флаги, DNS и расписание повторов. Прогоняйте холодные и тёплые сессии в обоих браузерах и повторяйте тест после истечения TTL Alt-Svc.
Заменяет ли curl браузерное тестирование QUIC?
curl валидирует контракт сервера. Браузер добавляет куки, service worker и смешанный контент. В приёмке нужны оба слоя.
Как оформить «пакет» проверки на удалённом Mac?
Забронируйте окно на арендованном Mac, заранее установите нужные версии Safari и Chromium, подготовьте стейджинг-URL и скрипт команд из раздела выше. В конце сессии приложите к задаче HAR/netlog, вывод curl и короткий чек-лист «пройдено / не пройдено» — это ускоряет согласование с сетевой командой и продуктом.
Аренда Mac для подписи релиза по HTTP/3
Запустите Safari и Chromium рядом на реальном железе Apple, соберите выводы curl и захват трафика и закройте тикет быстрее, чем ждать корпоративный ноутбук. Откройте публичные страницы тарифов и помощи без входа в аккаунт, затем оформите аренду или покупку, когда команде нужно выделенное окно для QUIC и Safari.