Megosztás a következőn keresztül:


Tartalomkódolás

A HTTP protokollban (RFC 2616) megadott módon az alkalmazások kérhetik, hogy a kiszolgáló kódolt formátumban adja vissza a HTTP-válaszokat. A Windows Server 2008 és a Windows Vista rendszer előtt a tartalomkódolással rendelkező kérelmeket a rendszer elküldte az alkalmazásnak a saját szintjükön történő feldolgozás céljából. A Windows Server 2008-tól és a Windows Vista-tól kezdve az alkalmazás utasíthatja a WinINetet a tartalom dekódolására a gziphez, és deflálhatja a tartalomkódolási sémákat.

A tartalomdekódolás engedélyezéséhez az alkalmazás beállítja a dekódolási lehetőséget, amely azt kéri, hogy a WinINet a nevükben végezze el a dekódolást. A dekódolás engedélyezése azonban nem garantálja, hogy a WinINet tartalomdekódolást végez, és az alkalmazásnak készen kell állnia a dekódolás kezelésére. A WinINet eltávolítja a tartalomkódoló fejlécet a válaszból a tartalomdekódolás sikeres végrehajtásakor. Az alkalmazások várhatóan kezelik a tartalomdekódolást, függetlenül attól, hogy a dekódolási lehetőség engedélyezve van vagy le van tiltva, ha a tartalomkódoló fejléc szerepel a válaszban.

Ha a dekódolás engedélyezve van, az alkalmazásnak meg kell adnia a támogatott kódolások listáját a kérelem Accept-Encoding fejlécében. A Accept-Encoding fejléc azonban nem kötelezi a kiszolgálót a kódolt válasz küldésére. A WinINet olyan válaszokat küld, amelyek nem felelnek meg az elfogadható kódolások listájának az alkalmazásnak.

Az alábbi lista azokat a feltételeket ismerteti, amelyek mellett a WinINet tartalomdekódolást hajt végre a beállítás engedélyezésekor:

  • A Accept-Encoding fejlécnek szerepelnie kell a kérelemben, és meg kell adnia a gzip, a deflát, vagy a gzip és a deflate kódolási sémát is.
  • A Content-Encoding fejlécben megadott kódolási sémának meg kell egyeznie a Accept-Encoding fejlécben megadott kódolási sémák egyikével.
  • A válasz Content-Encoding fejléce csak egy kódolási sémát határoz meg.
  • A válasznak csak egy tartalomkódoló fejlécet kell tartalmaznia. A WinINet egyetlen kódolási sémával kódolt tartalmat dekódol.
  • A Cache-Control fejléc nem tartalmazhat átalakításmentes irányelvet.
  • A Content-Range fejléc nem lehet jelen a válaszban.

A Dekompressziós beállítás beállítása

A dekódolási beállítás beállítható a munkamenet-leírón, a kérelemleírón vagy a kapcsolati leírón. Az az elem, amelyre a dekódolási beállítás van konfigurálva, meghatározza a dekódolási beállítás hatókörét. A munkamenet dekódolásának beállítása például lehetővé teszi a leíró alatt létrehozott összes kapcsolat és kérés dekódolását.

A dekódolási opció beállításához az alkalmazás meghívja a InternetSetOption függvényt a InternetOpen, InternetConnectvagy HttpOpenRequestáltal visszaadott fogantyúval. A INTERNET_OPTION_HTTP_DECODING beállítás a dwOption paraméterben van megadva, az lpBuffer paraméter pedig egy igaz logikai változóra mutat. A dekódolás letiltásához az alkalmazás meghívja a(z) InternetSetOption függvényt a INTERNET_OPTION_HTTP_DECODING opcióval, és a logikai változót hamis értékre állítja.

Ha a dekódolási beállítás be van állítva, a WinINet dekódolást hajt végre a kérésen, amikor az alkalmazás meghívja InternetReadFile. Ha a WinINet hibát tapasztal a tartalomdekódolás végrehajtása közben, az InternetReadFile hívása meghiúsul egy ERROR_INTERNET_DECODING_FAILED. Ha a dekódolás sikertelen, az alkalmazásnak két lehetősége van: eltávolíthatja a Accept-Encoding fejlécet, és újraküldheti a kérést, vagy beállíthatja a INTERNET_OPTION_HTTP_DECODING beállítást hamisra, majd újraküldheti a kérést. Ha a dekódolási beállítás értéke hamis, az alkalmazásnak ellenőriznie kell a Content-Encoding fejlécet, és végre kell hajtania a dekódolást az alkalmazás szintjén.

Jegyzet

A WinINet nem támogatja a kiszolgálói implementációkat. Továbbá, szolgáltatás keretében nem használható. Kiszolgálói implementációkhoz vagy szolgáltatásokhoz használja Microsoft Windows HTTP Services (WinHTTP).