Чи потрібно вказати тип MIME, якщо завантажений файл не має розширення? Іншими словами, чи існує стандартний MIME тип за замовчуванням?
Чи потрібно вказати тип MIME, якщо завантажений файл не має розширення? Іншими словами, чи існує стандартний MIME тип за замовчуванням?
Відповіді:
Ви можете використовувати application/octet-stream
для невідомих типів.
У розділі 4.5.1 RFC 2046 зазначено:
Підтип "октет-потік" використовується для вказівки, що тіло містить довільні двійкові дані.
application/octet-stream
файл виконується. І навіть якщо браузер буде свідомо завантажити виконуваний файл, то він не «можливо виконати» без користувача з проханням; просто завантаження виконуваного файлу не означає, що я хочу, щоб він виконувався прямо зараз. Якщо дійсно є браузер, який може application/octet-stream
автоматично виконувати файли при завантаженні, скажіть нам, що та як відтворити поведінку. Зараз я вам не вірю.
Ми повинні використовувати RFC-7231 (HTTP / 1.1 Semantics and Content) в якості посилання замість RFC-2046 (Media Media), оскільки питання було чітко про тип HTTP Content Content.
Також RFC-2046 не чітко визначає невідомі типи, але RFC-7231 робить.
Не надсилайте тип MIME для невідомих даних.
Щоб було зрозуміліше: взагалі не використовуйте заголовок Content-Type.
RFC-7231
протокол передачі гіпертексту (HTTP / 1.1): семантика та зміст
3.1.1.5. Тип вмістуВідправник, який генерує повідомлення, що містить тіло корисної навантаження, ДОБРЕ
генерувати поле заголовка типу Вміст у цьому повідомленні, якщо
призначений тип носія доданого подання невідомий
відправника.
Цей розділ чітко говорить про те, щоб не залишати його, якщо ви точно не знаєте. Це також говорить про те, що приймач може припустити, що тип - це application / octet-stream, але річ у тому, що це може бути щось інше.
RFC-2046
4.5.1. Підтип Октет-ПотікРекомендована дія для реалізації, яка отримує об'єкт
"application / octet-stream", полягає у тому, щоб просто запропонувати ввести дані
у файл із будь-яким скасованим контент-переносом-кодуванням або, можливо,
використовувати його як вхід до вказаного користувачем. процес.
І, як уже було сказано вище:
RFC-7231
3.1.1.5. Тип вмістуЯкщо не існує поля заголовка типу вмісту, одержувач МОЖЕ або припустити тип медіа "додаток / октет-потік"
([RFC2046], розділ 4.5.1), або вивчити дані, щоб визначити його тип.
Якщо ви визначите це як "application / octet-stream", то ви говорите, що знаєте, що це "application / octet-stream".
Якщо ви цього не визначите, ви говорите, що не знаєте, що це таке, і рішення залиште одержувачу та одержувачу, а потім зможете перевірити, чи ходить він як качка і ...
Я вважаю за краще application/unknown
, але результат буде точно такий же, якapplication/octet-stream
application/octet-stream
або application/unknown
? Є причина, яку вони вигадали image/png
.