Перейти к содержимому

Content length как вычислить

  • автор:

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

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

Qwentor ★★★★★
19.05.16 13:09:44 MSK

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

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

i-rinat ★★★★★
( 19.05.16 13:10:41 MSK )

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

xtraeft ★★☆☆
( 19.05.16 13:15:09 MSK )

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

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

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

evilface ★★
( 19.05.16 16:42:04 MSK )

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

Content-Length

Заголовок Content-Length указывает размер отправленного получателю тела объекта в байтах.

Тип заголовка Заголовок сущности
Можно не передавать да

Синтаксис

Content-Length:

Директивы

Спецификация

Specification
HTTP Semantics
# field.content-length

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 6 янв. 2024 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Как рассчитывается значение заголовка Content-Length?

Я никогда об этом не задумывался, но сегодня вдруг задался вопросом, а что именно обозначает Content-Length? Исключительно размер тела запроса или оно показывает размер всего запроса, т. е. служебные заголовки + тело?

P. S. В документации написано, что это размер тела запроса, но не сказано, относятся ли служебные заголовки к телу!

  • Вопрос задан более двух лет назад
  • 1780 просмотров

2 комментария

Простой 2 комментария

space2pacman

Ярослав Иванов @space2pacman

Заголовки относятся к заголовкам. Длинна контента это только тело.

Lynn

Content-Length бывает 0, при этом очевидно что если бы в него входили заголовки, то такого бы быть не могло.

Решения вопроса 1

samodum

Какой вопрос — такой и ответ

Content-length показывает размер Body.
Т.е. он вполне может быть нулевого размера даже при наличии кучи заголовков и статуса.
Для таких простых вопросов всегда есть гугл и докментация
https://developer.mozilla.org/en-US/docs/Web/HTTP/.

Ответ зашит в самом названии — «Content length»

В документации написано, что это размер тела запроса, но не сказано, относятся ли служебные заголовки к телу!

Как рассчитать Content-Length для заголовка запроса POST на PHP CURL?

Для интеграции с сервисом Склад-Облако OptiCore нужно выполнить POST запрос ClientOrder_CreateUpdate в BODY которого содержится XML. Обязательным заголовком HTTP для этого запроса является Content-Length, если он не указано то сервер просто рвет соединение по таймауту. Подскажите как можно рассчитать это значение для Content-Length на PHP? Вот тело запроса XML

Onwer5479799dc684baa6af26767e849335db57488402020-06-162020-06-162020-06-16485479700013PVZCodeMSK2SUMTOPAY500.00162 78401199.0001 63 7840779.0001 64 78402999.0001  

В POSTMAN запросы проходят за счет того что это значение рассчитывается им автоматически, но как это сделать на PHP. https://yadi.sk/i/oaSYQxLof1pS3w

Отслеживать
задан 16 июн 2020 в 8:29
128 1 1 золотой знак 1 1 серебряный знак 11 11 бронзовых знаков
Как обычно — curl_setopt($ch,CURLOPT_HTTPHEADER,array(‘Content-length:’.strlen($post_data)));
16 июн 2020 в 9:50

пробовал не прокатывает! Вообще что нужно высчитывать, длину строки тела BODY запроса? Длину строки XML? Если да то не прокатывает этот вариант. Тоже не понятно а почему?

16 июн 2020 в 10:59

Длина строки SOAP выше, обрезанная от новых линий, и тип данных (Content-Length) по ссылке раз вы работаете с SOAP.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *