ERR_INVALID_CHUNKED_ENCODING per tarpinį serverį: tyrimas
Raskite, kur atsakymas tampa nepilnas arba sugadintas, palyginę jo kadravimą, sustojimo vietą ir tarpinio serverio maršruto žurnalus.
ERR_INVALID_CHUNKED_ENCODING reiškia, kad atsakymo nepavyko iššifruoti kaip viso chunked pranešimo. Tai, kad dalis turinio atkeliavo sėkmingai, neįrodo, kad likusi atsakymo dalis buvo tinkama.
- Išsaugokite atsakymo antraštes ir pirmąją dekoderio klaidą. Nustatykite, kuris komponentas ją pranešė ir ar pranešimas buvo paskelbtas chunked.
- Raskite sustojimo vietą. HTTP/1.1 chunked kodavimas reikalauja dydžių, atitinkamų duomenų, skyriklių ir baigiamosios dalies, o prireikus – trailers. Ankstyvas ryšio uždarymas ir sugadintas dydis yra skirtingos pėdos.
- Palyginkite tą pačią kontroliuojamą užklausą numatytame maršrute. Sugretinkite užklausą su tarpinio serverio ir priešingos pusės žurnalais. Ieškokite priešingos pusės uždarymo, tarpininko transformacijos arba programos atšaukimo toje vietoje.
Nedarykite išvados apie HTTP kadravimą iš TCP buferio dydžio. Vienas lizdo skaitymas gali apimti pusę dalies arba kelias dalis; biblioteka tada gali pateikti iššifruotą turinį skirtinguose buferiuose. JSON įrašas turi dar kitą ribą. Tarpinis serveris gali performuoti atsakymą, neatsižvelgdamas į pradines paketų ribas.
Jei įrodymai rodo į seną Squid implementaciją, kartu su ta išvada užrašykite jos versijos numerį. Squid 2.x pataisų patarimai neaprašo visų dabartinių leidimų. Palyginimo metu išsaugokite įprastą dekodavimą ir sertifikatų tikrinimą: klaidos slopinimas gali palikti nepilną failą atrodantį kaip sėkmingas atsisiuntimas.