Действительно ли это допустимо, чтобы иметь больше чем один вопросительный знак в URL?

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

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

Заметьте удвоенный вопросительный знак в начале строки запроса:

??blogid=122&entry_id=64497

Мой браузер, казалось, не испытывал затруднений из-за него и выполнения быстрого bookmarklet:

javascript:alert(document.location.search);

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

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

85
задан Justin Johnson 27 May 2010 в 19:28
поделиться

1 ответ

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

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

...

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

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

99
ответ дан 24 November 2019 в 08:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: