MyTetra Share
Делитесь знаниями!
Пробелы в URL - '%20' или '+'?
Время создания: 13.07.2018 15:30
Автор: http://imm0use.blogspot.ru/
Текстовые метки: url space
Раздел: PHP
Запись: Velonski/mytetra-database/master/base/1490251342mj2mh9v6zw/text.html на raw.githubusercontent.com

Наверянка, все знают, что пробелы в URL заменяются на %20. Также, иногда можно увидеть знаки +вместо пробелов. Сегодня пришлось задаться вопросом - в чем разница? Выяснилось, что, судя по RFC 2396, пробел кодируется при помощи %20. Насчет кодирования пробела знаком + ничего не сказано. С другой стороны, при кодировании строки запроса в MIME-тип application/x-www-form-urlencoded, принято пробел заменять на +. Это происходит при отправке GET-запроса с агрументами или значениями аргументов, содержащими пробел. В этом случае имеем обычный URL, но часть его после знака ? (аргументы и их значения) закодирована в соответствии с принципами кодирования типа application/x-www-form-urlencoded. Пример: есть страница с URL http://example.com/find%20module/. Здесь по RFC закодирован пробел между find и module. Представим там поисковую форму - поле ввода с именем query и кнопку "Найти", посылающую GET запрос на этот же URL, только с аргументами. При вводе в поисковую форму фразы "house 6 season download", URL с аргументами будет выглядить так: http://example.com/find%20module/?query=house+6+season+download. Здесь значение поля query преобразовалось, исходя из принципов кодирования application/x-www-form-urlencoded, но пробел между find и module кодируется по прежнему по RFC, т.к. он не имеет никакого отношения к GET-запросу.

 
MyTetra Share v.0.59
Яндекс индекс цитирования