Dimusikus
@Dimusikus
Любитель

Обработка http_request POST запроса в формате gzip?

Во внутренней локальной сети есть некое техническое устройство(с серваком на борту), В целом всё крутится на веб морде устройства, все его текущие тех параметры можно глядеть через броузер, задался целью уйти от браузера и написать свое приложение для мониторинга этих параметров. При анализе было выяснено [s](может неважно)что вебморда крутится на аяксе[/s], и при определенных POST запросах на локальный адрес, оно возвращает некие свои текущие технические параметры. Данный POST запрос(из отладочных логов браузера) был выдран и вставлен в гамак:

//формирование HEADERа
var map = ds_map_create();
ds_map_add(map, "Accept-Encoding", "gzip, deflate, br");
ds_map_add(map, "Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7");
ds_map_add(map, "Connection", "keep-alive");
ds_map_add(map, "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36 OPR/74.0.3911.218");
var data= "ajax=refresh_tx&port=5004&reserve=0&lang=1";
var htp = "http://1.2.1.2/js/refresh/tr.php";
request = http_request(htp, "POST", map, data);


т.е. штатно при работе, браузер запрашивает данные сжатые в gzip.

В итоге я получаю ответ:

в событии ASYNC_HTTP:
response_headers[? Cache-Control] = no-store, no-cache, must-revalidate, post-check=0, pre-check=0
response_headers[? Content-Length] = 884
response_headers[? Content-Encoding] = gzip
response_headers[? Last-Modified] = Fri, 16 Jul 2021 20:42:54 GMT
response_headers[? Server] = Apache/2.2.34
response_headers[? Connection] = Keep-Alive
response_headers[? X-Powered-By] = PHP/5.2.17
response_headers[? Keep-Alive] = timeout=40, max=118
response_headers[? Vary] = Accept-Encoding
response_headers[? Content-Type] = text/html; charset=utf-8
response_headers[? Date] = Fri, 16 Jul 2021 20:42:54 GMT
response_headers[? Pragma] = no-cache
response_headers[? Set-Cookie] = RCUSESSID=04ed1fe2b7076a51a910799fba7daf0b; path=/
response_headers[? Expires] = Thu, 19 Nov 1981 08:52:00 GMT


т.е. прилетели 884 байт каких то данных.

в async_load какаято белеберда в "result":

async_load[? response_headers] = 3
async_load[? http_status] = 200
async_load[? url] = http://1.2.1.2/js/refresh/tr.php
async_load[? id] = 1
async_load[? status] = 0
async_load[? result] = ?


typeof говорит что result это строка из двух символов по сути и куда же делись 884байта данных?

если из http_request POST запроса убрать Accept-Encoding, то ответ в result возвращается нормальный и в формате json но в текстовом еесно виде, и Content-Length у него в несколько раз больше, а меня это не устраивает(т.к. таких железяк в локалке несколько сотен и трафик надо "экономить" т.к. канал очень низкоскоростной), всё же хочу допить гамак чтобы он через gzip данные получал.

Гамак вообще умеет принимать ответы в gzip?
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы