Допустимо ли иметь более одного вопросительного знака в 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.
2 ответов
Да, действительно. Только первый ?
в URL имеет значение, любое после него рассматривается как буквальные вопросительные знаки:
компонент запроса указывается первый вопросительный знак ("?") символ и завершается числом знак ( " # " ) символ или к концу Ури.
...
символы косой черты ("/") и вопросительный знак ("?") может представлять данные внутри компонента запроса. Остерегаться что некоторые старше, ошибочны реализации могут не обрабатывать такие данные правильно, когда он используется в качестве базовый URI для относительных ссылок (Раздел 5.1), по-видимому, потому, что они не удается отличить данные запроса от данные пути при поиске иерархические разделители. Однако, как компоненты запросов часто используются для нести идентифицирующую информацию в виде "ключ=значение" и один часто используемое значение является ссылкой для другого URI иногда лучше для удобство использования, чтобы избежать проценты-кодирование этих символов.