zlib 對http協議中的gzip解壓

2022-09-19 10:48:10 字數 665 閱讀 1679

gzip資料可以用zlib解壓, 很多人用的是去掉gzip頭10個位元組再解壓, 這個情況資料可以解壓出來, 但是程式會報錯

strm->msg = (char *)"incorrect data check";

檢視相關**可以看到這個是效驗檢查不對

/* check function to use adler32() for zlib or crc32() for gzip */

(state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
從這可以看到gzip使用的效驗演算法是不一樣的, 再找state->flags

if ((state->wrap & 2) && hold == 0x8b1f)

else {

state->wrap = (windowbits >> 4) + 1;

從這看到 windowbits 也就是 inflateinit2的引數

自行定義乙個 #define gzip_bit 0x2f

nwndbit = bgzip ? gzip_bit : def_wbits;

nerror = inflateinit2(&zstream, nwndbit);

這樣zlib可以直接把gzip完整解壓

HTTP協議?HTTP協議中POST GET H

head to inde x.html not supported.invalid method in request head htp 1.1 apache 1.3.12 server at www.fudan.edu.cn port 80 關於實體頭部的內容還可以有 last modified ...

對HTTP基本認識(HTTP協議入門必備)

目錄 基本概念 使用phpstudy演示get方法 分析下get方法 使用phpstudy演示post方法 分析post方法 http請求資訊和響應資訊的格式!請求 1.請求行 2.請求頭資訊 3.請求主題資訊 可以沒有 4.頭資訊結束後和主體資訊之間要空一行 請求行又分3部分!請求方法 請求路徑 ...

認識tcp ip協議中的http協議

一 什麼是tcp ip tcp ip協議是乙個協議集合,按照層次分為鏈路層 網路層 傳輸層 應用層四個層次。與tcp ip協議並列的還有osi網路框架模型 開放式系統互連參考模型,分為物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層七個層次 1.鏈路層 用來處理連線網路的硬體部分,包括控制...