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