Ответ 1
Спецификация синтаксиса URI для общих URI. Он позволяет что угодно в . Я не знаю какой-либо спецификации, которая фактически указывает пары с ключом = значение, разделенное амперсандами. Я считаю, что это просто конвенция. Я знаю, что PHP, например, предлагает вариант использования другого разделителя. Но теперь все используют вещи, разделенные амперсандами, когда им нужны пары ключ-значение. Вы все же иногда сталкиваетесь с вещами, которые используют его только для простой строки, например. http://example.com/?example. Это совершенно верно.
Основной ответ заключается в том, что &
допустим в любой строке запроса, включая в конце.
Развертывание синтаксиса RFC или Why &
допустимо в любой строке запроса:
Во-первых, у вас
query = *( pchar / "/" / "?" )
(Таким образом, строка запроса состоит из любого числа pchar
и буквенных косых черт и вопросительных знаков.)
Возвращаясь назад, вы
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
И раньше еще
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Итак, буква &
находится в sub-delims
, который находится в pchar
, поэтому он действителен в query