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

Допустимо ли иметь более одного знака вопроса в URL-адресе?

Сегодня я наткнулся на следующий URL:

http://www.sfgate.com/cgi-bin/blogs/inmarin/detail??blogid=122&entry_id=64497

Обратите внимание на двойной знак вопроса в начале строки запроса:

??blogid=122&entry_id=64497

У моего браузера, похоже, не было проблем с этим, и запустил быстрый букмарклет:

javascript:alert(document.location.search);

просто дал мне строку запроса, показанную выше.

Является ли это допустимым URL? Причина, по которой я так педантичен (предполагая, что я есть), заключается в том, что мне нужно анализировать такие URL-адреса для параметров запроса, а поддержка двойных вопросительных знаков потребует некоторых изменений в моем коде. Очевидно, если они находятся в дикой природе, мне нужно будет их поддержать; Мне в основном интересно, если я ошибаюсь в том, что я не придерживаюсь стандартов URL точно, или если это на самом деле нестандартный URL.

4b9b3361

Ответ 1

Да, это действительно так. Только первый ? в URL имеет значение, любое после того, как оно рассматривается как буквальные вопросительные знаки:

Компонент запроса указывается первый вопросительный знак ( "?" ) символа и заканчивается числом знак ( "#" ) или к концу URI.

...

Символы слэш ( "/" ) и вопросительный знак ( "?" ) может представлять данные в компоненте запроса. берегись что некоторые более старые, ошибочные реализации не могут обрабатывать такие данных, когда он используется как базовый URI для относительных ссылок (Раздел 5.1), по-видимому, потому, что они не удается отличить данные запроса от данные пути при поиске иерархические разделители. Однако, поскольку компоненты запроса часто используются для переносить идентифицирующую информацию в форма пар "ключ = значение" и одна часто используемое значение является ссылкой к другому URI, иногда лучше для удобства использования процентное кодирование этих символов.

http://tools.ietf.org/html/rfc3986#section-3.4

Ответ 2

Как касательно связанный ответ, foo?spam=1?&eggs=3 дает параметр spam значение 1?