• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь POST запрос, регистрация платы esp32s[Node32s]

Алексей.

Active member
А где символы от 'chunked' и как совокупляются 'Content-Length: 40', 'chunked' и chunked + GZIP On по умолчанию у HTTP/1.1?
Accept-Encoding - в запросе информирует сервер о том какие кодировки сущностей клиент может принять в ответе
Content-Length - вы сами знаете что

все приложения работающие по http/1.1 должны безусловно поддерживать chunked, по какой причине в библиотеке клиента добавили chunked, комментариев нет
Код:
if(!_useHTTP10) {
 header += F("Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0\r\n");
}
а последняя там 'Content-Length: 40', которая отменяет 'chunked'.
Могла бы отменить Transfer-Encoding: chunked но его там нет

Ответ придет загадочный – должен быть сжат GZIP или с 'chunked', т.к. указан HTTP/1.1
Сервер не должен отдавать сжатые сущности потому как в запросе у Accept-Encoding не было gzip;
 

pvvx

Активный участник сообщества
Могла бы отменить Transfer-Encoding: chunked но его там нет.
'Content-Length: 40' отменяет chunked в данном констексте, а не везде. Transfer-Encoding не отменяет default установки, если не описывает их конкретно.
Сервер не должен отдавать сжатые сущности потому как в запросе у Accept-Encoding не было gzip;
Было - HTTP/1.1
Gzip, chunked, keep-alive = On.

C gzip более сложная ситуация, т.к. стандарт промышленный и рекомендательный, а не научный, что говорит о том, что является стандартом на cегодня, на то, что сделано и чаще происходит у большего кол-ва. :)
С мелкими сообщениями вам просто везет - сервер должен сравнить, что выходит меньше - в gzip или несжатый малый фрагмент. На самом деле там такого анализа нет, а производится сравнение типа, если более X байт, то сжимаем.
А так-же почему серверу не ответить в формате мультидата? И воспримет ли её тот софт на ESP-32, как и все лейблы шрифтом в верхнем регистре, что отдают до 20% серверов? :)
Проблем меньше только от того, что используемые сервера специально заточены на запросы пользователей таких устройств...
 
Последнее редактирование:

Алексей.

Active member
Ответ ТС и получил в виде "абракадабры" :)
получал вполне внятные 4-х сотки

Оно отменяет chunked в данном констексте, а не везде.
отменять нечего было, в акцепте клиент сообщал что он может принять чанкед а не говорил что он отправляет чанкед сущность

gzip как и keep-alive были добавлены в http/1.1 но клиенты и серверы могут их не поддерживать
 

pvvx

Активный участник сообщества
gzip как и keep-alive были добавлены в http/1.1 но клиенты и серверы могут их не поддерживать
Могут, но это не вина сервера. Пусть сообщат, что не могут, изменив запрос.
ПДД тоже меняют и несогласование со старыми вариантами не спасет вас от штрафа :)
В инет много публикаций на счет проверки на текущие варианты стандартов серверов HTTP. Обычно не более половины их выполняет...
RFC и пытается согласовать все эти неурядицы для большинства. Так и образуются новые варианты.
А устройство вы делаете не на вечер. Тут надо применять только то, что однозначно и уже устоялось.
(а не сочинять какие-то директивы серверу из последних RFC)
Первоапрельские RFC — Википедия
Мои Web-свалки частично поддерживают HTCPCP — Википедия
«I’m a teapot» github - Поиск в Google

По всему этому запроса HTTP/1.0 для данных поделок, будет достаточно, чтобы не вызвать непонятный ответ сервера...
Если он отказывается работать на 1.0, то тогда придется подбирать директивы, что его устраивают и дают ответ, который может распознать текущее ПО на ESP-32 :)
 
Последнее редактирование:

Алексей.

Active member
pvvx, Вы хотите сказать что библиотеки ардуины это говнокод? Я и не сомневаюсь в этом, так называемым "разработчикам" библиотек наплевать на стандарты кодирования, к разработчикам сдк это тоже относится. В примере TS в запросе был какойто фарш, я выкинул лишнее и показал что уходит в запросе. Если у вас есть лучший ответ, предложили бы.
 

pvvx

Активный участник сообщества
pvvx, Вы хотите сказать что библиотеки ардуины это говнокод? Я и не сомневаюсь в этом, так называемым "разработчикам" библиотек наплевать на стандарты кодирования, к разработчикам сдк это тоже относится.
Я не про то. Сервер тоже может поступать как ему заблагорассудится (ну как его там настроили).
В примере TS в запросе был какойто фарш, я выкинул лишнее и показал что уходит в запросе. Если у вас есть лучший ответ, предложили бы.
Указал вроде - HTTP/1.0 и всё остальное выкинуть :)
 
Сверху Снизу