Подтвердить что ты не робот

Поддерживают ли браузеры порядок ввода с таким же именем в GET/POST?

У меня есть этот HTML-код с несколькими input с тем же именем:

<input type="hidden" value="42" name="authors" />
<input type="hidden" value="13" name="authors" />
<input type="hidden" value="33" name="authors" />

Порядок значений важен. Определяет ли спецификация HTML, что пользовательские агенты должны сохранить этот порядок, и если да, то используют ли общие (рыночные доли > 1%) браузеры это определение?

Бонусные баллы, если кто-то знает, поддерживает ли WSGI и особенно Django серверную часть заказа: -)

Спасибо!

4b9b3361

Ответ 1

Да, они должны быть отправлены в порядке их появления в соответствии с HTML RFC

См. 8.2.1. Форма носителя с кодировкой urlencoded:

Поля перечислены в порядке их появления в документе с именем, отделенным от значения символом = а пар, отделенных друг от друга символом &. Поля с нулевыми значениями могут быть опущены. В частности, невыбранные переключатели и флажки не должны появляться в закодированных данных, а скрытые поля с атрибутами VALUE должны присутствовать.

Я нашел в спецификации для HTML 4.0 тоже:

Для URL-кодированных данных:

Имена/значения элементов управления перечислены в порядке их появления в документе. Имя отделяется от значения символом = а пары имя/значение отделяются друг от друга знаком &.

Для составных данных (спасибо @Chuck):

Сообщение "multipart/form-data" содержит серию частей, каждая из которых представляет успешный элемент управления. Детали отправляются агенту обработки в том же порядке, в котором соответствующие элементы управления отображаются в потоке документов. Границы детали не должны встречаться ни в одной из данных; как это делается, выходит за рамки данной спецификации.

Ответ 2

спецификация HTML5 для application/x-www-form-urlencoded и text/plain излагает алгоритм, который "для каждой записи в наборе данных формы [...] Добавить", что приводит к тому же порядку.

Как для multipart/form-data: "Порядок частей должен быть таким же, как порядок полей в наборе данных формы. Несколько записей с тем же именем должны обрабатываться как разные поля".

Это не будет полным без получения порядка набора данных формы, полученного из документа: тот же самый spec определяет алгоритм для построения набора данных формы, что "Loop: для каждого поля элемента в элементах управления, в порядке дерева, выполните следующие подшаги и пропустите или добавьте запись.

Поэтому для пользовательских агентов, совместимых с HTML5, независимо от того, какая кодировка, не пропущенные параметры упорядочены по дереву, с допустимыми дубликатами.