--- title: Символы, которые нужно экранировать в запросах slug: общие-обмен-данными/символы-которые-нужно-экранировать-в-запросах --- # 🌐 Символы, требующие экранирования в теле 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 с кавычками и спецсимволами: ```json { "message": "Привет \"мир\" " } ``` При передаче должно быть: ```json { "message": "Привет \\"мир\\" \\u003Cscript\\u003Ealert(\\'xss\\');\\u003C/script\\u003E" } ``` --- ## 🧠 Совет - В URL используйте `encodeURIComponent()` (JavaScript) или аналогичные функции в других языках. - В JSON-строках используйте escape-символ `\` и Unicode-коды. - Для `application/x-www-form-urlencoded` — кодируйте с учётом `+` вместо пробела.