kb-personal/src/content/docs/knowledge-base/Примеры, сниппеты/Общее/Обмен данными/Символы, которые нужно экранировать в запросах.md
2025-04-16 21:21:27 +05:00

2.8 KiB
Raw Blame History

🌐 Символы, требующие экранирования в теле 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 — кодируйте с учётом + вместо пробела.