Зарезервированные и исключенные символы HTTP и URL
Чтобы помочь в правильной передаче и интерпретации HTTP-запроса, использование определенных символов в URL-адресе ограничено. Эти символы должны быть преобразованы в безопасный формат при передаче запроса.
Ниже приводится краткое описание зарезервированных и исключенных символов. Для получения дополнительной информации в документе RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax, запрошенном Обществом Интернета и IETF (Internet Engineering Task Force) для комментариев, перечислены символы, зарезервированные или исключенные в URI и URL-адресах. RFC 2396 доступен по адресу https://www.ietf.org/rfc/rfc2396.txt.
В URI или URL-адресе символы, имеющие специальное назначение в контексте одного или нескольких компонентов URI или URL-адреса, называются зарезервированными символами. Например, символы/,?, & и : используются в качестве разделителей для различных компонентов. Машинные интерпретаторы могут неправильно интерпретировать URI или URL-адрес, если по какой-либо причине используются зарезервированные символы.
Кроме того, некоторые символы запрещены или исключены из использования в любом месте URI или URL-адреса, либо потому, что они являются потенциальной причиной путаницы для машинных или человеческих пользователей, либо потому, что они, как известно, вызывают проблемы у некоторых машинных интерпретаторов. Например, символ пробела не допускается в URL-адресе.
Если зарезервированные символы требуются в URL-адресе по какой-либо причине, отличной от их специального назначения, или если в URL-адресе требуются исключенные символы, они должны быть экранированы при отправке на сервер запроса, содержащего компоненты URL-адреса. Такие символы в данных, отправляемых в строке запроса, также должны быть экранированы.
Символы экранируются путем замены 3-символьной строкой вида %xx, где xx - шестнадцатеричное представление ASCII зарезервированного символа. Из-за этого формата экранирование также известно как процентное кодирование.
Когда запрос поступает на сервер, сервер может отменить экранирование экранированных символов. Снятие эскапирования происходит только после того, как информация в URL-адресе и строке запроса была проанализирована, чтобы избежать риска того, что приложение для анализа неправильно истолкует зарезервированные или исключенные символы.
Данные формы в запросе обычно отправляются с экранированными специальными символами, поскольку кодировка по умолчанию для форм (application/x-www-form-urlencoded) экранирует зарезервированные или исключенные символы.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.