Символы, которые нужно экранировать в запросах
🌐 Символы, требующие экранирования в теле HTTP-запроса
В теле HTTP-запроса (в URL, JSON, form-data, XML и других форматах) некоторые символы должны быть экранированы, чтобы не нарушить синтаксис или не вызвать ошибку интерпретации данных.
🔒 Символы, которые нужно экранировать (URL encoding)
Символ | Назначение / причина экранирования | Кодировка (URL encoding) |
---|---|---|
(пробел) | Разделитель — не допускается в URL | %20 или + |
" | Строковый литерал в JSON/XML | %22 |
' | Апостроф (может нарушить SQL/XML/HTML) | %27 |
< | Тег в HTML/XML | %3C |
> | Тег в HTML/XML | %3E |
& | Разделитель параметров | %26 |
= | Разделяет имя и значение | %3D |
? | Начало query-строки | %3F |
/ | Разделитель пути | %2F |
\ | Экранирование в JSON/JS | %5C |
# | Якорь в URL | %23 |
% | Префикс для escape-последовательностей | %25 |
: | Разделитель схемы URL | %3A |
@ | В URL может обозначать логин | %40 |
+ | Обозначает пробел в application/x-www-form-urlencoded | %2B |
{ } | JSON-структуры | %7B %7D |
[ ] | Массивы / JSON | %5B %5D |
, | Разделитель в CSV, JSON и др. | %2C |
📌 Пример экранирования URL
Исходный URL:
https://example.com/api?query=тест & значение
После экранирования:
https://example.com/api?query=%D1%82%D0%B5%D1%81%D1%82%20%26%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
📎 Пример в JSON
JSON с кавычками и спецсимволами:
{ "message": "Привет \"мир\" <script>alert('xss');</script>"}
При передаче должно быть:
{ "message": "Привет \\"мир\\" \\u003Cscript\\u003Ealert(\\'xss\\');\\u003C/script\\u003E"}
🧠 Совет
- В URL используйте
encodeURIComponent()
(JavaScript) или аналогичные функции в других языках. - В JSON-строках используйте escape-символ
\
и Unicode-коды. - Для
application/x-www-form-urlencoded
— кодируйте с учётом+
вместо пробела.