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

Примеры использования параметра URL-адреса

Обычно, когда я думаю о параметрах в URL-адресе, я думаю о строке запроса. Технически, однако, также законно указывать параметры в сегментах пути. Таким образом, задан такой URL:

http://www.a.com/frisbee/brand

Это законно написать это вместо:

http://www.a.com/frisbee;color=red;size=small/brand;test=1

На практике я никогда этого не вижу. Какие рамки, если таковые имеются, используют это?

Я работаю с ASP.NET MVC3 в последнее время, и я не уверен, что он может извлечь эти параметры.

4b9b3361

Ответ 1

Многие современные рамки будут поддерживать указание переменных как часть сегмента пути в своих системах анализа URL.

Symfony (PHP) и Django (Python) будут поддерживать это, поскольку они поддерживают извлечение значений из URL через регулярные выражения.

Одно существенное различие заключается в том, что параметры, указанные в строке запроса, обычно могут быть в любом порядке, потому что они, как правило, анализируются в словаре-подобной структуре. Это не относится к параметрам в сегменте пути. Разумеется, вы можете сами проанализировать их в словаре, но рамки, которые я только что упомянул, не помогут вам в этом.

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

Ответ 2

Java Servlet Containers использует переписывание URL-адресов для поддержания состояния сеанса, когда клиент не поддерживает файлы cookie, добавляя параметр пути. Спецификация сервлета говорит, что параметр пути должен быть назван jsessionid

например. http://example.com/servlet_path;jessionid=E60FF3ABD2926AD9AA45513A385E373D

Чтобы получить эту работу, вы должны быть осторожны, чтобы всегда передавать URL-адреса, которые вы отправляете клиенту с помощью response.encodeURL() или response.encodeRedirectURL(), чтобы контейнер мог добавить необходимый параметр пути.

Дополнительная поддержка требуется спецификацией для запросов на сопоставление сервлетов

Путь, используемый для сопоставления сервлету, - это URL-адрес запроса из объекта запроса минус путь контекста и параметры пути