Кратко
- RFC 9512 регистрирует
application/yamlи+yamlкак обозначения YAML-сериализаций для обмена и согласования содержимого. - Обозначение формата не является доказательством безопасного разбора, проверки всего потока, приемлемой семантики, разрешения на действие или фактического результата.
В операционной системе заголовок легко принять за накладную, по которой уже будто бы выдан товар. Появился Content-Type: application/yaml; значит, известно, чем читать тело, и процесс сдвинулся с места. Но между «мы распознали представление» и «мы вправе изменить среду» остаётся цепочка самостоятельных решений. Если она исчезает из записи, у формата появляется власть, которой стандарт ему не давал.
RFC 9512 строит полезную, но узкую общую поверхность. Он регистрирует application/yaml и структурированный синтаксический суффикс +yaml, чтобы участники обмена могли назвать YAML-сериализацию и договориться о её представлении. Это снимает путаницу на границе протокола. Это не делает всякий YAML-документ допустимым для конкретного приложения и не превращает текст отправителя в распоряжение получателю.
Версия показывает границу сразу. Регистрация не зависит от версий; сам документ может указать версию директивой YAML, но тип носителя не выбирает её за сервис. Получатель должен сам определить принимаемые версии и функции. Специализированный тип +yaml также не получает автоматически всю семантику application/yaml: он обязан описать собственную семантику идентификаторов фрагментов. Родовое имя объясняет происхождение формата, но не заменяет локальный договор о его употреблении.
Поток документов делает этот вопрос проверяемым. YAML-поток способен содержать ноль или несколько документов. RFC 9512 говорит, что приложение, ожидающее один документ, должно сообщить об ошибке при получении нескольких, а не тихо игнорировать остаток. Речь не о том, что несколько документов сами по себе недопустимы. Речь о честности контроля: действие, основанное только на первом документе, не подтверждает проверку всего входа, если остальные документы остались вне решения.
Раздел о безопасности оставляет ещё несколько обязанностей на локальной стороне. Теги в некоторых реализациях могут привести к выполнению произвольного кода, поэтому RFC рекомендует отключать такое поведение по умолчанию. Граф представления может содержать циклы или экспоненциально расширяться при построении; нужны подходящие проверки, пределы рекурсии и ресурсов. Инкрементальный разбор способен вернуть частичный результат до более поздней ошибки, а значит, прежде чем что-либо обрабатывать, следует проверить все документы потока. Это не приговор YAML как языку.
Это отказ приписывать одному заголовку гарантии, которые создаются только конфигурацией и проверкой получателя.
Не менее важна граница доказательства. Повторное кодирование способно изменить пробелы или якоря и тем самым повлиять на проверку подписи. При преобразовании YAML в JSON могут быть утрачены комментарии, директивы и узлы-псевдонимы; несколько документов, нестроковые ключи, циклы, .inf, .nan и теги могут осложнять совместимость. Поэтому похожий после преобразования объект не обязательно является тем же подписанным артефактом. Полученные байты, интерпретированная структура, результат проверки, разрешение и наблюдённый эффект должны храниться раздельно, но с ясными связями.
Зрелый процесс не делает тип пропуском через все двери. Он сначала распознаёт представление. Затем выбирает допустимую конфигурацию разбора и проверяет полный поток в установленных пределах. После этого оценивает схему и местный смысл запроса. Отдельный носитель полномочий разрешает или отклоняет последствия. И лишь наблюдение состояния позволяет сказать, что изменилось на самом деле. Стандартизировать можно первую дверь; ответственность за остальные нельзя передать заголовку.
Именно так работает идея Heng Lu о минимальной общей спецификации и последующем локальном решении. Общая норма должна фиксировать узкий совместимый факт, а не поглощать выбор, который создаёт последствия для конкретного оператора. Работающий код важен, однако успешный разбор — это факт обработки, не мандат и не доказательство достигнутого эффекта.
Источники
- https://www.rfc-editor.org/rfc/rfc9512.html
- https://www.rfc-editor.org/rfc/rfc6838.html
- https://www.rfc-editor.org/rfc/rfc8174.html
- https://www.iana.org/assignments/media-types/application/yaml
- https://www.iana.org/assignments/media-type-structured-suffix/media-type-structured-suffix.xhtml
- https://yaml.org/spec/1.2.2/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
