MIME типы
Стандартные MIME-типы для сериализаций Protobuf.
Все документы Protobuf должны иметь MIME-тип application и подтип protobuf, с суффиксом +json для
JSON-кодирований в соответствии со стандартом, с последующими параметрами:
encodingдолжен устанавливаться только вbinaryилиjson, обозначая соответствующие форматы.- С подтипом
protobuf+jsonпараметрencodingпо умолчанию имеет значениеjsonи не может быть установлен вbinary. С подтипомprotobuf(без+json) параметрencodingпо умолчанию имеет значениеbinaryи не может быть установлен вjson. - Используйте
+jsonдля JSON, даже в HTTP-ответах, которые используют "parser breakers" в качестве меры смягчения CORB.
- С подтипом
- Установите
charsetвutf-8для всех JSON- или Text Format-кодирований и никогда не устанавливайте его для бинарных кодировок.- Если
charsetне указан, предполагается, что он равен UTF-8. Предпочтительно всегда указыватьcharset, так как это может предотвратить определенные векторы атак, когда protos используются в HTTP-ответах.
- Если
- Protobuf резервирует параметр
versionдля потенциального будущего управления версиями наших wire-форматов. Не устанавливайте его, пока wire-формат не будет версионирован.
Таким образом, стандартные MIME-типы для распространенных кодировок protobuf:
application/protobufдля сериализованных бинарных protos.application/protobuf+json; charset=utf-8для protos в формате JSON.
Сервисы, которые читают Protobuf, также должны обрабатывать application/json, который может
использоваться для кодирования protos в формате JSON.
Парсеры должны завершаться ошибкой, если параметры MIME (encoding, charset или version) имеют
неизвестные или недопустимые значения.
Когда бинарные protos передаются через HTTP, Protobuf настоятельно рекомендует
кодировать их в Base64 и устанавливать X-Content-Type-Options: nosniff для предотвращения
XSS, поскольку возможно, что Protobuf будет разобран как активный контент.
Допустимо передавать дополнительные параметры для этих MIME-типов при необходимости, например, URL типа, который указывает на схему содержимого; но параметры MIME-типа не должны включать опции кодирования.