Як ви правильно зазначаєте, HTTP-клієнти використовують заголовок Accept, щоб повідомити серверу, які типи вмісту вони приймуть. Потім сервер поверне відповідь, яка буде містити заголовок типу "Вміст", який повідомляє клієнтові, яким саме є тип вмісту повернутого контенту.
Однак, як ви могли помітити, HTTP-запити також можуть містити заголовки типу вмісту. Чому? Ну, подумайте про POST або PUT запити. За допомогою цих типів запитів клієнт фактично надсилає купу даних на сервер як частину запиту, а заголовок Content-Type повідомляє серверу, якими є дані насправді (і таким чином визначає, як сервер буде їх розбирати).
Зокрема, для запиту POST, отриманого в результаті подання форми HTML, тип вмісту запиту (як правило) є одним із стандартних типів вмісту форми нижче, як зазначено enctype
атрибутом у <form>
тегу:
application/x-www-form-urlencoded
(за замовчуванням, старший, простіший, трохи менше накладних витрат для невеликої кількості простого тексту ASCII, без підтримки завантаження файлів)
multipart/form-data
(новіше, додає підтримку для завантаження файлів; ефективніше для великої кількості бінарних даних або не ASCII тексту)