Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jak je specifikováno v protokolu HTTP (RFC 2616), aplikace mohou požadovat, aby server vracel odpovědi HTTP v kódovaném formátu. Před Windows Serverem 2008 a Windows Vista byly požadavky s kódováním obsahu odeslány do aplikace ke zpracování na jejich úrovni. Počínaje systémy Windows Server 2008 a Windows Vista může aplikace směrovat WinINet k provádění dekódování obsahu pro schémata kódování obsahu gzip a deflate.
Aby bylo možné dekódování obsahu povolit, nastaví aplikace možnost dekódování, která požaduje, aby WinINet prováděl dekódování jménem. Povolení dekódování však nezaručuje, že WinINet bude provádět dekódování obsahu a aplikace by měla být připravena na zpracování dekódování. WinINet odstraní hlavičku kódování obsahu z odpovědi při úspěšném dekódování obsahu. Očekává se, že aplikace zpracovávají dekódování obsahu bez ohledu na to, jestli je v odpovědi povolená nebo zakázaná možnost dekódování obsahu.
Při dekódování musí aplikace zadat seznam podporovaných kódování v hlavičce Accept-Encoding požadavku. Hlavička Accept-Encoding však nezavazuje server k odeslání zakódované odpovědi. WinINet odešle odpovědi, které neodpovídají seznamu přijatelných kódování zpět do aplikace.
Následující seznam popisuje podmínky, za kterých bude WinINet provádět dekódování obsahu, když je tato možnost povolená:
- Hlavička Accept-Encoding musí být v požadavku přítomna a musí určovat gzip, deflate nebo jak gzip, tak i deflate schémata kódování.
- Schéma kódování zadané v hlavičce Content-Encoding se musí shodovat s jedním ze schémat kódování zadaných v hlavičce Accept-Encoding.
- Hlavička Content-Encoding v odpovědi určuje pouze jedno schéma kódování.
- Odpověď musí obsahovat pouze jednu hlavičku Content- Encoding. WinINet dekóduje obsah, který je kódován pouze jedním schématem kódování.
- Hlavička Cache-Control nesmí obsahovat direktivu 'no-transform'.
- Hlavička Content-Range nesmí být v odpovědi.
Nastavení možnosti dekomprese
Možnost dekódování lze nastavit na popisovači relace, požadavku nebo připojení. Rozsah dekódovací možnosti určuje popisovač, na kterém je možnost dekódování nastavena. Například nastavení dekódování relace povolí dekódování všech připojení a požadavků vytvořených v rámci daného popisovače.
Chcete-li nastavit možnost dekódování, aplikace volá InternetSetOption s popisovačem vráceným z InternetOpen, InternetConnectnebo HttpOpenRequest. Možnost INTERNET_OPTION_HTTP_DECODING je zadána v parametru dwOption a parametr lpBuffer odkazuje na logickou proměnnou nastavenou na hodnotu true. Chcete-li dekódování zakázat, aplikace volá InternetSetOption s možností INTERNET_OPTION_HTTP_DECODING a logickou proměnnou nastavenou na false.
Při nastavení dekódovací možnosti WinINet provádí dekódování na požadavku, když aplikace volá InternetReadFile. Pokud WinINet narazí na chybu během dekódování obsahu, volání InternetReadFile selže s ERROR_INTERNET_DECODING_FAILED. Když dekódování selže, aplikace má dvě možnosti: může odebrat hlavičku Accept-Encoding a znovu odeslat požadavek, nebo může nastavit možnost INTERNET_OPTION_HTTP_DECODING v požadavku na false a pak žádost znovu odeslat. Pokud je možnost dekódování nastavena na false, musí aplikace zkontrolovat hlavičku Content-Encoding a provést dekódování na úrovni aplikace.
Poznámka
WinINet nepodporuje implementace serveru. Kromě toho by se nemělo používat jako služba. Pro implementace serverů nebo služby použijte microsoft Windows HTTP Services (WinHTTP).