LINUX.ORG.RU

Как вычислить поле Content-Length заголовка POST запроса?

 , ,


0

2

Сабж. Как это делается? Это длина в символах отправляемого json массива или что? Пишу парсер на питоне, пытаюсь выцепить AJAX запрос, а просто так он не работает. Посмотрел все отсылаемые заголовки, выставляю так же, но все равно ошибка 400. URL правильный, но вот не знаю как вычислить Content-Length

★★★★★

Это длина в символах отправляемого json массива или что?

Это длина тела запроса в байтах.

i-rinat ★★★★★
()

А разве в таких случаях не проще юзать curl, который все это посчитает сам и умеет еще много чего другого?

xtraeft ★★☆☆
()
>>> s = "Привет, Qwentor"
>>> len(s)
15
>>> len(s.encode('utf-8'))
21


Как сказано выше, это Content-Length — длинна строки в байтах, при этом стоит учитывать, что в питоне ваше тело сообщения, будучи строкой, кодируется в юникоде.

И, если мне не изменяет память, все заголовки должны заканчиваться именно \r\n, не уверен, правда, та же ли ошибка будет в случае неправильных переводов строк, но стоит проверить.

evilface ★★
()

Если Вы правильно сформулировали вопрос, то оно вам не надо. AJAX-у не надо лезть в HTTP-заголовки, это всё делает браузер. На стороне сервера, это тоже не очень надо, т.к. POST обычно обрабатывается как поток. Но если таки надо, то для CGI скриптов и программ, заголовок доступен в переменных окружения среды. Не знаю, как на Pithon-е, в массиве C это называется CONTENT_LENGTH, в sh/Bash подстановка $CONTENT_LENGTH.

NG2016
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.