Tudnivalók a WinHTTP-ról

Important

A megfelelő Windows HTTP-verem kiválasztása

Scenario Ajánlott API
Windows szolgáltatás, démon vagy kiszolgálóoldali kód WinHTTP – szolgáltatásokhoz tervezve; támogatja a megszemélyesítést, a munkamenet-elkülönítést
IE-proxybeállításokat, cookie-kat vagy hitelesítő adatokat kérő asztali alkalmazás WinINet – automatikusan örökli a felhasználó Internetbeállítások konfigurációját
Modern C++ alkalmazás (UWP vagy Desktop) Windows.Web.Http (C++/WinRT) – modern, elsődlegesen aszinkronra épülő, modern TLS-támogatás
.NET-alkalmazás System.Net.Http.HttpClient – felügyelt, platformfüggetlen, készletezett kapcsolatok
Platformközi C/C++ libcurl vagy a platform HTTP-könyvtárai – nem Windows-specifikus

A WinINet főbb eltérései: A WinHTTP nem oszt meg cookie-kat, gyorsítótárat vagy hitelesítő adatokat a felhasználó böngészőjével. Nincs felhasználói felületi kérése. Támogatja a szolgáltatásfiókok és a megszemélyesítés futtatását. A teljes funkció összehasonlítása a WinINet és a WinHTTP között található.

Jegyzet

Biztonsági alapértékek – A WinHTTP a TLS-verzió egyeztetéséhez az operációs rendszer Schannel-konfigurációját követi. Mindig ellenőrizze a szervertanúsítványokat; éles környezetben soha ne állítsa a(z) WINHTTP_OPTION_SECURITY_FLAGS értéket úgy, hogy figyelmen kívül hagyja a tanúsítványhibákat. A TLS-konfigurációval kapcsolatban lásd a WinHTTP biztonsági szempontjait.

Jegyzet

Az alkalmazástárolók és a rendszerszolgáltatások esetében a Windows 10 1709-es verziója óta a HTTP/2 (lásd RFC7540) alapértelmezés szerint be van kapcsolva.

A Microsoft Windows HTTP Services (WinHTTP) egy kiszolgáló által támogatott, magas szintű felületet biztosít a HTTP/2 és az 1.1 internetes protokollhoz. A WinHTTP elsősorban a HTTP-kiszolgálókkal kommunikáló kiszolgálói alkalmazások kiszolgálóalapú forgatókönyveiben használható.

WinINet http-ügyfélplatformként tervezték interaktív asztali alkalmazásokhoz. A WinINet megjelenít egy felhasználói felületet bizonyos műveletekhez, például a felhasználói hitelesítő adatok gyűjtéséhez. A WinHTTP azonban programozott módon kezeli ezeket a műveleteket. A HTTP-ügyfélszolgáltatásokat igénylő kiszolgálóalkalmazások WinINet helyett WinHTTP-t használnak. További információ: WinINet-alkalmazások portolása WinHTTP.

A WinHTTP rendszerszolgáltatásokhoz és HTTP-alapú ügyfélalkalmazásokhoz is használható. Az FTP-protokoll funkcióit, a cookie-megőrzést, a gyorsítótárazást, az automatikus hitelesítő adatok párbeszédpanel-kezelését, az Internet Explorer kompatibilitását vagy az alsó szintű platformtámogatást igénylő egyfelhasználós alkalmazásoknak azonban érdemes megfontolni WinINethasználatát.

Ez a felület a C/C++-ról érhető el a WinHTTP alkalmazásprogramozási felület (API) vagy az IWinHttpRequest és IWinHttpRequestEvents interfészek használatával. A WinHTTP szkriptből és a Microsoft Visual Basicből is elérhető a WinHTTP objektumon keresztül. Az egyes függvényekkel kapcsolatos további információkért és leírásért tekintse meg az adott nyelv WinHTTP-függvényekre vonatkozó hivatkozását.

A Windows 8-tól kezdve a WinHTTP api-kat biztosít a WebSocket Protocoll használatával történő kapcsolatok engedélyezéséhez, például WinHttpWebSocketSend és WinHttpWebSocketReceive.

Vigyázat

A WinHTTP csak az aszinkron befejezési visszahívás során lesz újra meghívva. Ez azt jelzi, hogy míg egy szál hívása függőben van az egyik WinHTTP-függvényhez, például a WinHttpSendRequest, a WinHttpReceiveResponse, a WinHttpQueryDataAvailable, a WinHttpSendData vagy a WinHttpWriteData függvényhez, az első hívás befejezéséig nem hívhatja meg másodszor a WinHTTP-t. Az egyik forgatókönyv, amelyben egy második hívás történhet, a következő: Ha egy alkalmazás sorba állít egy aszinkron eljáráshívást (APC) a szálhoz, amely a WinHTTP-ba hív, és ha a WinHTTP belsőleg riasztási várakozást hajt végre, az APC futtathatóvá válik. Ha előfordul, hogy az APC-rutin meghívja a WinHTTP-t, az újra belép a WinHTTP API-ba, és a WinHTTP belső állapota felborulhat.

A WinHTTP 5.1 funkciói

A WinHTTP 5.1-es verziójában a következő funkciók lettek hozzáadva:

  • IPv6-támogatás.
  • AutoProxy képességek.
  • HTTP/1.0 protokoll, beleértve az életben maradó (állandó) kapcsolatok és a munkamenet-cookie-k támogatását.
  • HTTP/1.1 adattömbátvitel támogatása HTTP-válaszokhoz.
  • Névtelen kapcsolatok folyamatosan élő fenntartása a munkamenetek között.
  • A Secure Sockets Layer (SSL) funkciói, beleértve az ügyféltanúsítványokat is. A támogatott SSL-protokollok a következők: SSL 2.0, SSL 3.0 és Transport Layer Security (TLS) 1.0.
  • A kiszolgáló- és proxyhitelesítés támogatása, beleértve a Microsoft Passport 1.4 integrált támogatását, valamint a Kerberos csomag egyeztetését és.
  • Az átirányítások automatikus kezelése, hacsak nincs letiltva.
  • Szkriptelhető felület az API mellett.
  • Nyomkövetési segédprogram a problémák elhárításához.

A WinHTTP-ban számos WinINet funkció nem támogatott, beleértve az URL-gyorsítótárazást, az állandó cookie-kat, az autoproxyt, az automatikus tárcsázást, az offline támogatást és a Fájlátviteli Protokollt (FTP).

Az 5.1-es verzióban bevezetett módosításokról további információt A WinHTTP 5.1 újdonságaicímű témakörben talál.

A WinHTTP használatának első lépései

A WinHTTP-ról az alábbi témakörökben talál további információt.