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