Закодированный URL не работает - PullRequest
3 голосов
/ 14 ноября 2011

Я не совсем понимаю, зашифрованные URL.

Например, когда я пишу в браузере:

stackoverflow.com/questions

, я могу успешно просматривать страницу.

Однако, когдаЯ пишу:

stackoverflow.com%2Fquestions

Я не могу просмотреть.

Поскольку % 2F означает «/», я хочу понять, почему это не работает должным образом.

Причина, по которой я хочу это выяснить, заключается в том, что я получаю закодированный URL-адрес, и я не знаю, как я могу декодировать этот URL-адрес сразу после его получения, чтобы не было страницы ошибки.

Ответы [ 5 ]

10 голосов
/ 14 ноября 2011

/ является одним из percent-encoding reserved characters. URL-адреса используют percent-encoding reserved characters для определения их синтаксиса. Только когда эти символы не используются в их специальной роли в URL-адресе, их необходимо кодировать.

Зарезервированные в процентах зарезервированные символы:

!       *       '       (       )       ;       :       @       &       =       +       $       ,       /       ?       #       [       ]
%21     %2A     %27     %28     %29     %3B     %3A     %40     %26     %3D     %2B     %24     %2C     %2F     %3F     %23     %5B     %5D
5 голосов
/ 14 ноября 2011

%2F - это URL, экранированный /.Это означает, что / следует рассматривать как символ, а не разделитель каталогов.

По сути, он ищет домен stackoverflow.com/questions, а не домен stackoverflow.com с путемquestions.

1 голос
/ 14 ноября 2011

%2F - это экранированный символьный объект, то есть он будет включен в имя, а не в символ /, который обозначает иерархию каталогов , как указано в RFC 1630, стр. 8 .

1 голос
/ 14 ноября 2011

Кодировка URL используется, например, для кодирования строкового параметра URL, полученного из формы HTML, которая содержит специальные символы, такие как «/».Запись «stackoverflow.com% 2Fquestions» неверна, в этом случае символ «/» является частью самого URL-адреса и не должен кодироваться.

1 голос
/ 14 ноября 2011

% 2F - это то, что вы пишете, когда хотите включить / в параметр, но не хотите, чтобы браузер перемещался по другому каталогу / маршруту.

Так что если у вас есть путь к файлу 'root/ subdirectory ', передаваемый в качестве параметра строки запроса, вы можете закодировать, например:

http://www.testurl.com/page.php?path=root%2Fsubdirectory

вместо

http://www.testurl.com/page.php?path=root/subdirectory

...