Допустимые символы в URL: Регулярные выражения и примеры

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В URL разрешено использование буквенно-цифровых символов (A-Z, a-z, 0-9), безопасных (-, _, ., ~), специальных (!, *, ', (, )) и зарезервированных (;, /, ?, :, @, &, =, +, $, ,). Неподдерживаемые символы кодируются в процентах по их шестнадцатеричному ASCII-коду — например, %20 представляет пробел. Вот пример такого кодирования:

https://www.example.com/search?q=coding%20tips

Здесь %20 заменяет пробел, форматируя структурированный запрос с параметрами.

Кинга Идем в IT: пошаговый план для смены профессии

Роль символов в URL

Каждый символ в URL выполняет свою функцию. Знак вопроса ? открывает строку запроса, а символ решетки # указывает на начало идентификатора фрагмента. Благодаря структурированности URL они удобны в использовании и соответствуют стандартам.

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

Сложные символы, вроде эмодзи или пробелов, требуют процентного кодирования, так как они не соответствуют стандартному ASCII. Например, эмодзи 😊 будет закодирован как %F0%9F%98%8A.

При программном формировании URL полезно использовать функции типа encodeURIComponent() в JavaScript для корректной обработки подобных символов.

Обоснование необходимости процентного кодирования

Символы типа & и = в URL требуют кодирования для избежания паразитного взаимодействия и сохранения их литерального значения.

Символы ASCII, не относящиеся к основным, и символы, используемые в международных URL, также стоит кодировать в процентах для правильной интерпретации серверами и клиентами.

Корректное кодирование URL избавляет от проблем с кешированием, обработкой запросов и угрозами безопасности, включая SQL-инъекции.

Визуализация

Возьмем для примера чемодан (🧳) для путешествий, упакованный согласно правилам:

Markdown
Скопировать код
| Чемодан (🧳)   | Допустимое содержимое                       |
| ---------------| --------------------------------------------|
| URL (🧳)        | A-Z, a-z, 0-9, "-", "_", ".", "~"           |

Преобразуем запрещенные предметы в допустимый формат посредством процентного кодирования:

Markdown
Скопировать код
До (❌): [🍎, " ", 🎲, 😊]
После (✅): [🍎, "%20", 🎲, "%F0%9F%98%8A"] // Дорогой, я уменьшил детей

Бирки на багаж (🏷️) — scheme, authority, path и другие компоненты помогают определить содержимое нашего цифрового чемодана, также как GPS помогает в путешествиях по интернету.

Лучшие практики при создании URL

Употребление некоторых небезопасных символов (<, >, ", {, }, |, \, ^, ` ) может вызвать ошибки и угрозы безопасности. Рекомендуется избегать их в URL, как неслишком дружественных пользователей.

Необычные ситуации и поиск и устранение неполадок

Интерпретация URL в разных браузерах может отличаться. Проблематичные символы, такие как вертикальная черта |, подчеркивают необходимость консистентности и надлежащего кодирования для обеспечения совместимости.

Пробелы — распространенная ошибка. Используйте код %20 или символ + (в строках запроса) для обеспечения совместимости. В "космосе" ваших URL пробелы должны быть закодированы.

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

Полезные материалы

  1. RFC 3986 – Uniform Resource Identifier (URI): Generic Syntax — обязательное чтение для понимания структуры и синтаксиса URI.
  2. Character encodings: Essential concepts — вводный материал от W3C по вопросам символов и кодировок.
  3. encodeURIComponent() – JavaScript | MDN — подробное руководство по кодированию компонентов URI с использованием JavaScript.
  4. RFC 8141 – Uniform Resource Names (URNs) — всесторонние сведения о синтаксисе URN.
  5. What is URL Encoding and How does it work? | URLEncoder — доступное и ясное объяснение процентного кодирования с жизненными примерами.
  6. HTML Standard — стандарт HTML5, содержащий информацию об элементе <a> и его взаимодействии с URL.
  7. (Please) Stop Using Unsafe Characters in URLs | Perishable Press — полезный список допустимых символов URL и лучших практик их использования.