Safari Technology Preview 251: CNAME expiry cap не затрагивает first-party cookie. People-first диагностика: матрица «контекст запроса → DNS role → requested expiry → stored expiry class»; синтетический fixture, независимый контроль, одно обратимое воздействие, stop-line и обезличенный handoff.
Как отделить этот сбой
Прямой ответ на запрос «как проверить CNAME cloaking cookie expiry cap для top level и subresource в Safari Technology Preview 251» начинается с границы: проверяется только боль «срок собственной cookie top-level страницы ошибочно сокращается правилом, предназначенным только для CNAME-cloaked subresource» на локальном fixture. Успех заранее определяется так: expiry top-level cookie сохраняется отдельно, а cap оценивается только для соответствующего subresource контекста. Нельзя подменять его похожей картинкой, общей скоростью браузера или выводом о стабильном Safari. Отдельная ловушка — обычное ограничение cookie lifetime, ошибочно принятое за CNAME-cloaking cap. Исход получает один из статусов reproduced, not reproduced, unsupported, environment-blocked, invalid или unknown. Первое наблюдение не считается доказательством, пока контроль и возврат к baseline не подтвердили, что изменилась ровно одна причина.
Что именно подтверждено в Release 251
Официальная страница WebKit от 26 августа 2026 года относит к Safari Technology Preview 251 следующий change item: исправлено применение CNAME-cloaking cookie expiry cap: оно больше не затрагивает собственные cookies top-level страницы. Техническая ссылка — 318332@main. Release note и commit подтверждают наличие конкретного изменения в ветке, но не частоту жалоб, спрос, причинность для чужой страницы, результат на данном компьютере или перенос в стабильный выпуск. Публичная ветка MacRumors перепроверена только как community lead. Её текст, реакции и поисковые snippets не используются как фактологическое evidence и не дают права писать о массовости.
Измерения до изменения
Fixture: контролируемые тестовые hostnames, локальные пустые cookies и серверный журнал только Set-Cookie атрибутов без значений. До действия без интерпретации записываются request role, registrable domain, Max-Age/Expires, stored expiry bucket и источник Set-Cookie. Рабочий артефакт — матрица «контекст запроса → DNS role → requested expiry → stored expiry class». У каждой строки есть expected, observed, время, версия TP 251 и флаг валидности. Используются только синтетические данные. Запрещено сохранять cookie, IP, Authorization, токены, реальные URLs с query, имена профилей, пользовательские файлы и полные логи. Если нужное поле нельзя получить без персональных или секретных данных, тест останавливается: пробел не заполняют догадкой и не расширяют сбор.
Независимый маршрут сравнения
Контрольная ветка готовится до canary: top-level cookie без CNAME-пути при тех же атрибутах SameSite, Secure и Path. Она проверяет, не объясняется ли симптом общей средой или тестовой обвязкой. Риск «обычное ограничение cookie lifetime, ошибочно принятое за CNAME-cloaking cap» получает собственную колонку, потому что совпадение внешнего вида не означает совпадение причины. Если control отклоняется вместе с основной веткой, результат invalid и публикационная формулировка не утверждает воспроизведение. Такой контроль не обещает универсальной корректности; он лишь делает конкретный вывод опровержимым и не позволяет замаскировать соседний сбой вторым изменением.
Локальный прогон и возврат
Основной шаг: установить две безличные cookies с одинаковым сроком: одну top-level, другую через подготовленный subresource. Сначала фиксируется baseline, затем выполняется только указанное воздействие, после заранее выбранного settle-события повторно снимаются request role, registrable domain, Max-Age/Expires, stored expiry bucket и источник Set-Cookie. Далее состояние полностью возвращается и baseline измеряется ещё раз. PASS возможен, когда expiry top-level cookie сохраняется отдельно, а cap оценивается только для соответствующего subresource контекста. Production, реальные аккаунты, чужие сайты, VPN-конфиги, маршрутизация и пользовательские данные в процедуру не входят. Если rollback не возвращает исходные признаки, весь прогон помечается invalid независимо от привлекательности результата.
Стоп-линия и итоговый артефакт
Финальное решение хранится как матрица «контекст запроса → DNS role → requested expiry → stored expiry class». Reproduced означает только выполнение условия «expiry top-level cookie сохраняется отдельно, а cap оценивается только для соответствующего subresource контекста» на этом стенде; not reproduced не опровергает проблему в других средах. Стоп-линия: остановиться, если нет контроля DNS/CNAME, часы меняются, cookie имеет реальный идентификатор или policy браузера неизвестна. Для передачи разработчику достаточно минимального fixture, версии, обезличенных значений «request role, registrable domain, Max-Age/Expires, stored expiry bucket и источник Set-Cookie», результата контрольной ветки, отметки rollback и ссылки на 318332@main. Статья не обещает индексацию, позиции, спрос, стабильную поддержку или автоматическое исправление; сомнительный либо неполный прогон не должен становиться новым URL.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318332@main, техническая граница, контроль, rollback, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318332@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.