Kimaradt az előző hozzászólásomból, hogy a "
Content-Length" hiánya akkor nem hiba a kiszolgáló részéről ha az átvitel például kódolva történik és az állomány végleges mérete nem tudható előre.
Tipikusan ilyen a tömörített adatátvitel. A tömörített adatátvitel nem .zip vagy .rar (stb.) fájlok letöltését jelenti, hanem azt hogy az állomány az átvitel idejének csökkentése érdekében a kiszolgálón röptében tömörítésre kerül, majd az ügyfél gépén, az állomány mentése előtt, szintén röptében, kitömörítésre: "
Transfer-Encoding: gzip"
Hasonló lehet a helyzet a részletekben történő átvitel esetén, ha az adatfolyam mérete a kiszolgálói oldalon előre nem tudható: "
Transfer-Encoding: chunked"
Ráadásul ezek együtt is lehetségesek: "
Transfer-Encoding: gzip, chunked"
Ha részletekben történik az átvitel akkor ha van is "Content-Length" fejléc, az nem a teljes állomány méretét jelenti, hanem csak az adott szeletét. Ilyenkor érdemes a "
Content-Range" fejléc tartalmát elemezni, mert esetleg (de nem feltétlenül) abban lapulhat a végleges méret: "
Content-Range: bytes 0-1023/4096"
Az előző fejléchez, melyben ott van, hogy az állomány végleges mérete 4096 bájt, a következő (az adott szeletre vonatkozó) méret fejléc tartozna: "
Content-Length: 1024"
Lásd még:
developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding