zkrvndm
@zkrvndm
Архитектор решений

Почему не совпадает значение заголовка Content-Length с реальным количеством символов?

Отправляю JSON на сервер:
var json = JSON.stringify(obj);

response = await $.ajax({
    url: 'https://server.com',
    method: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'html'
});

В переменной json текст, количество символов которого равно 10188, но заголовок Content-Length у меня показывает больше символов, а именно 10255! Я не понимаю, почему в консоли длинна запроса у меня получается больше???

6042100a34721791706305.png
60421016a897d359888998.png

Зачем мне это надо знать
Многие из вас кажут, а тебе не похрен? Просто пользуйся и не забивай голову, но это не так. Дело в том, что сервер на который я отсылаю данные блокирует запрос, если Content-Length неверный. При отправке запроса из браузера это не критично, так как браузер сам верно рассчитывает кол-во символов, но это критично, когда мне надо отправить этот же самый запрос из php! В этом случае мне самому надо посчитать длину запроса и вписать его в заголовках запроса - да только сервер не принимает посчитанные мной вручную значения. Соответственно, мне нужно понять каким образом считает длинную запроса сам браузер и реализовать подсчет по аналогии уже на php. Мне нужно лишь понять, почему в консоли Conten-Length больше получается, чем реально отправляемые данные.
  • Вопрос задан
  • 879 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
json.length - длина строки в символах.
content-length - длина тела запроса в байтах.
В общем случае символ != байт.
Ответ написан
lazalu68
@lazalu68
Salmon
Если данные в JSON, то какие-то символы могут быть экранированы. Например строка "{"key":"string \"with \\special chars"}" в сыром виде состоит из 39 символов, после обработки js будет состоять из 37
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект