Ответ 1
производство в RFC 2616 для заголовка Content-Type
:
Content-Type = "Content-Type" ":" media-type
media-type = type "/" subtype *( ";" parameter )
type = token
subtype = token
Это говорит о том, что, хотя часть параметра (например, charset=utf-8
является необязательной, часть type "/" subtype
не является, то есть тип носителя должен иметь тип, за которым следует слэш, за которым следует подтип.
Итак, Content-Type: charset=utf-8
не является допустимым синтаксисом для этого, а не специально определенным в любом другом месте, нормативно/авторитетно, чтобы быть.
RFC 2616 фактически устарел RFC 7231 и несколькими другими RFC (текущими HTTP RFC).
Но соответствующие части RFC 7231 определяют по существу одни и те же производные для этого случая:
Произведение в RFC 7231 для значения заголовка Content-Type
таково:
Content-Type = media-type
media-type = type "/" subtype *( OWS ";" OWS parameter )
type = token
subtype = token
И никакая другая спецификация не устаревает или не заменяет эту часть-RFC 7231, которая остается авторитетной в этом вопросе.
Большинство языков программирования имеют хорошие библиотеки для разбора медиафайлов для проверка синтаксиса; Пример:
npm install content-type
node -e "var ct = require('content-type'); ct.parse('charset=utf-8')"
=> TypeError: invalid media type
node -e "var ct = require('content-type'); ct.parse('image; charset=utf-8')"
=> TypeError: invalid media type