Что такое '-' в Multipart/Form-Data?
-
29-09-2019 - |
Вопрос
Я хочу задать вопрос об данных Multipart/Form. Я нахожу HTTP-заголовок Multipart Post и типа контента: Multipart/Form-Data; Граница = -----...-- BoundaryNumber. Я хочу спросить, сколько из «-» между границей и '='?
Решение
Ни один -
является обязательным. Вы можете иметь любое количество из них. На самом деле это загадка для меня, почему агенты пользователей, как правило, добавляют так много. Вероятно, это традиционно, потому что в старые времена, когда люди все еще регулярно смотрят на фактический протокол трафика, он предоставил немного приятного визуального разделения. В настоящее время это бессмысленно.
Обратите внимание, однако, что когда вы использовать Граница в потоке, она должна быть префиксирована двумя дефисами (--
). Это часть протокола. Конечно, тот факт, что большинство пользовательских агентов используют много дефисов на своей границе, очень трудно увидеть это.
Кроме того, прошлой граница (которая отмечает конец сообщения) и суффикс двумя дефисами (--
).
Итак, вы можете назвать свою границу OMGWTFPLZDIEKTHX
, и тогда ваш трафик может выглядеть так:
Content-Type: multipart/form-data; boundary=OMGWTFPLZDIEKTHX
--OMGWTFPLZDIEKTHX
Content-Type: text/plain
First part (plain text).
--OMGWTFPLZDIEKTHX
Content-Type: text/html
<html>Second part (HTML).</html>
--OMGWTFPLZDIEKTHX--
Другие советы
Количество тире зависит от того, сколько вы хотите там. Это может быть ноль, если вам нравится - только что больше тире делает границу более очевидной.
Граница состоит из линии, содержащей две черты плюс все после "Boundary =". Так что, если ваш заголовок сказал boundary=ABC
, граница выглядит как
--ABC
В вашем граничном определении дефиса не требуется. При использовании этой границы для разделения двух отдельных частей тела вы должны начать с двух дефисов, а затем ваша ранее определенная граничная строка.
Это объясняется в RFC 1341 (MIME), и вы можете найти дополнительную информацию там в разделе Multipart (как связано).
Это полностью произвольно.
Точка границы состоит в том, чтобы определить начало и окончание ваших данных. Неважно, что это так, пока не является частью содержания.