Соглашения по экранированию адресов URL

soglasheniya po ekranirovaniju adresov url Сценарии на стороне сервера

Обратите, однако, внимание, что хотя неэкранированные < нельзя вставлять в разметку HTML ответа, тем не менее, их вполне допустимо включать в адреса URL, используемые для получения ответа. На самом деле для HTML и URL определены совершенно различные специальные символы. Например, символ & в разметке HTML необходимо преобразовывать в &amp, но для представления символа & в адресе URL должна использоваться совсем другая схема кодирования (там этот символ обычно разделяет параметры). Для передачи сценарию названия языка, такого как a&b, нужно ввести такой адрес URL:

http://localhost/cgibin/languages2reply.py?language=a%26b

Здесь %26 представляет символ &, то есть символ & заменяется комбинацией символа % с шестнадцатеричным значением (0x26) & в кодировке ASCII (38). Аналогично, как уже отмечалось в конце главы 13, чтобы передать название языка C++ в виде параметра запроса, символ + необходимо заменить экранированной последовательностью %2b:

http://localhost/cgibin/languages2reply.py?language=C%2b%2b

Передача названия C++ в неэкранированном виде не даст желаемого результата, потому что символ + в строках URL имеет специальное значение — он представляет пробел. По стандартам URL большинство не алфавитно-цифровых символов должно преобразовываться в такие экранированные последовательности, а пробелы — замещаться символами +. Это соглашение известно как формат строки запроса application/ x-www-form-url encoded, и оно стоит за теми странными адресами URL, которые вы можете часто видеть в адресной строке броузера, путешествуя в Веб.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий