N
N
Nadim Zakirov2021-03-05 14:03:52
AJAX
Nadim Zakirov, 2021-03-05 14:03:52

Why doesn't the value of the Content-Length header match the actual number of characters?

Sending JSON to the server:

var json = JSON.stringify(obj);

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

The json variable has text whose number of characters is 10188, but the Content-Length header shows more characters for me, namely 10255! I do not understand why in the console the length of the request I get more???

6042100a34721791706305.png
60421016a897d359888998.png

Why do I need to know
Многие из вас кажут, а тебе не похрен? Просто пользуйся и не забивай голову, но это не так. Дело в том, что сервер на который я отсылаю данные блокирует запрос, если Content-Length неверный. При отправке запроса из браузера это не критично, так как браузер сам верно рассчитывает кол-во символов, но это критично, когда мне надо отправить этот же самый запрос из php! В этом случае мне самому надо посчитать длину запроса и вписать его в заголовках запроса - да только сервер не принимает посчитанные мной вручную значения. Соответственно, мне нужно понять каким образом считает длинную запроса сам браузер и реализовать подсчет по аналогии уже на php. Мне нужно лишь понять, почему в консоли Conten-Length больше получается, чем реально отправляемые данные.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Rsa97, 2021-03-05
@zkrvndm

json.length - length of the string in characters.
content-length - length of the request body in bytes.
In general, character != byte.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question