Я написал очень простую информацию о чтении программы с сервера FastCGI. Все, что он принимает, принимает сокет с файловым дескриптором 0 и «пукает» все данные, полученные с сервера, в raw.binary (1KB). Я получил 926 байт, но файл имеет длину 1014, потому что буфер имеет такой размер.Сервер отправляет неправильные заголовки FCGI
Я попытался вручную проанализировать данные, используя this Спецификация FastCGI, но данные, похоже, не соответствуют тому, что мне говорит эта спецификация.
Первые 2 байта оба равны 1. Большой, это означает, что протокол версии 1, тип 1. (который представляет собой начало запроса.)
Следующие 2 байта составляют Int16, содержащий 1. Кроме того, это как и ожидалось, потому что это идентификатор запроса, а 1 - первый запрос.
Следующие 2 байта, однако, (шестнадцатеричный) 00 08
, скажите, что длина содержимого равна 8 ... Это невозможно, хотя в этом значении 8 имеется много контента, так как вы можете видеть, вы загрузили двоичную тарабарщину.
Что я делаю неправильно?