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


A WinHTTP 5.1 újdonságai

Ez a témakör a WinHTTP 5.1-es és 5.0-s verziója közötti legfontosabb különbségeket ismerteti. Ezen különbségek jelentős része megköveteli az alkalmazások kódmódosítását az 5.0-s verzióról az 5.1-es verzióra való migráláshoz. Az 5.1-es verzió egyes funkciói csak a Windows Server 2003 és a Windows XP Service Pack 2 (SP2) csomaggal kezdődően érhetők el, különösen az ügyfél rosszindulatú webkiszolgálókkal szembeni biztonságának növelésével kapcsolatos funkciók.

Fontos

A WinHTTP 5.1-es verziójának kiadásával a WinHTTP 5.0 letöltése már nem érhető el. 2004. október 1-étől a Microsoft eltávolította a WinHTTP 5.0 SDK letöltését, és megszüntette az 5.0-s verzió terméktámogatását.

 

DLL-név módosítása

Az új WinHTTP 5.1 DLL neve Winhttp.dll, míg a WinHTTP 5.0 DLL neve Winhttp5.dll.

A WinHTTP 5.0 és az 5.1 párhuzamosan is létezhet ugyanazon a rendszeren; A WinHTTP 5.1 nem cseréli le vagy telepíti át a WinHTTP 5.0-t.

Újraelosztás

A WinHTTP 5.1 csak a Windows Server 2003, a Windows 2000 Professional és a Service Pack 3 (SP3), a Windows XP service Pack 1 (SP1) és újabb operációs rendszerek esetén érhető el. A WinHTTP 5.1-hez nem érhető el újraterjeszthető egyesítési modul (.msm) fájl.

WinHttpRequest ProgID

A WinHttpRequest összetevő ProgID azonosítója a "WinHttp.WinHttpRequest.5" értékről "WinHttp.WinHttpRequest.5.1" értékre módosult. A WinHttpRequest osztály CLSID azonosítója is megváltozott.

Aszinkron visszahívási viselkedés módosítása

A WinHttpWriteData, WinHttpQueryDataAvailable és WinHttpReadData függvényeket aszinkron módban való meghívásakor ne támaszkodjon arra, hogy a megfelelő lpdwNumberOfBytesWritten, lpdwNumberOfBytesAvailableés lpdwNumberOfBytesRead OUT paraméterek be lesznek állítva. Ha a függvényhívás aszinkron módon fejeződik be, a WinHTTP nem ír az alkalmazáskód által megadott mutatókra. Ehelyett az alkalmazásnak le kell kérnie ezeket az értékeket lpvStatusInformation és dwStatusInformationLength paraméterekkel a visszahívási függvényhez.

Az alapértelmezett beállítások módosítása

Az alapértelmezett beállítások módosításai a következők:

  • Az SSL-kiszolgáló tanúsítványának ellenőrzése alapértelmezés szerint engedélyezve van a WinHTTP 5.1-ben. A WinHTTP 5.0 nem kezeli a kiszolgálótanúsítvány végzetes hibaként való érvényesítésekor előforduló hibákat; a rendszer egy SECURE_FAILURE visszahívási értesítéssel jelenti őket az alkalmazásnak, de nem okozza a kérés megszakítását. A WinHTTP 5.1 másik megoldásként a kiszolgálótanúsítvány-érvényesítési hibákat olyan végzetes hibákként kezeli, amelyek megszakítják a kérést. Az alkalmazás utasíthatja a WinHTTP-t, hogy hagyja figyelmen kívül a tanúsítványhibák egy kis részét, például ismeretlen hitelesítésszolgáltatót, érvénytelen/lejárt tanúsítványdátumot vagy érvénytelen tanúsítványtulajdonosi nevet a WINHTTP_OPTION_SECURITY_FLAGS beállítással.
  • A Passport-hitelesítés támogatása alapértelmezés szerint le van tiltva a WinHTTP 5.1-ben. Az útlevél-támogatás a WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH lehetőséggel engedélyezhető. A Keyring automatikus Passport-hitelesítő adatainak keresése alapértelmezés szerint le van tiltva.
  • Az átirányítási viselkedés megváltozik: A HTTP-átirányítások biztonságos https: URL-címről normál http: URL-címet biztonsági okokból a rendszer alapértelmezés szerint nem követi automatikusan. A WinHTTP 5.1 alapértelmezett átirányítási viselkedésének felülbírálásához egy új lehetőség áll rendelkezésre, WINHTTP_OPTION_REDIRECT_POLICY. A WinHttpRequest COM-összetevővel az új WinHttpRequestOption_EnableHttpsToHttpRedirects beállítással engedélyezheti az átirányításokat a https: URL-címekről az http: URL-címekre.
  • WinHTTP-nyomkövetési fájl létrehozásakor az ACL korlátozza a hozzáférést, így csak a rendszergazdák olvashatják vagy írhatják a fájlt. A nyomkövetési fájlt létrehozó felhasználói fiók is módosíthatja az ACL-t, hogy hozzáférést adjon másoknak. Ez a védelem csak olyan fájlrendszereken érhető el, amelyek támogatják a biztonságot; azaz NTFS, nem FAT32).
  • A Windows Server 2003-tól és a Windows XP SP2-től kezdve a következő jól ismert, nem HTTP-portokra küldött kérések biztonsági okokból korlátozottak: 21 (FTP), 25 (SMTP), 70 (GOPHER), 110 (POP3), 119 (NNTP), 143 (IMAP).
  • A Windows Server 2003-tól kezdve a Windows XP sp2-vel kezdődően a WinHTTP által a HTTP-válaszban elfogadott fejlécadatok maximális mennyisége alapértelmezés szerint 64 000. Ha a kiszolgáló HTTP-válasza több mint 64 000 fejléc adatot tartalmaz, a WinHTTP hibával a kérés sikertelen lesz: ERROR_WINHTTP_INVALID_SERVER_RESPONSE. Ez a 64K-korlát felülírható az új WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE beállítással.

IPv6-támogatás

A WinHTTP 5.1 támogatja az Internet Protocol 6-os verzióját (IPv6). A WinHTTP http-kéréseket tud küldeni egy olyan kiszolgálónak, amelynek DNS-neve IPv6-címként oldható fel, és a Windows Server 2003-tól kezdve a Windows XP sp2-vel való verziójától kezdve a WinHTTP támogatja az IPv6 literális címeket is.

Új lehetőségek a WinHTTP-hoz készült C/C++ API-ban

A WinHTTP 5.1 a következő új lehetőségeket valósítja meg:

"\#define WINHTTP\_OPTION\_PASSPORT\_SIGN\_OUT 86" "\#define WINHTTP\_OPTION\_PASSPORT\_RETURN\_URL 87" "\#define WINHTTP\_OPTION\_REDIRECT\_POLICY 88"

A Windows Server 2003-tól és a Windows XP SP2-től kezdve a WinHTTP 5.1 az alábbi új lehetőségeket valósítja meg. Windows 2000 Professional SP3 vagy Windows XP SP1 rendszeren azonban a WinHttpSetOption vagy WinHttpQueryOption meghívása ezekkel az opcióazonosítókkal sikertelen:

"\#define WINHTTP\_OPTION\_RECEIVE\_RESPONSE\_TIMEOUT 7" "\#define WINHTTP\_OPTION\_MAX\_HTTP\_AUTOMATIC\_REDIRECTS 89" "\#define WINHTTP\_OPTION\_MAX\_HTTP\_STATUS\_CONTINUE 90" "\#define WINHTTP\_OPTION\_MAX\_RESPONSE\_HEADER\_SIZE 91" "\#define WINHTTP\_OPTION\_MAX\_RESPONSE\_DRAIN\_SIZE 92"

Új lehetőségek a WinHttpRequest 5.1 összetevőben

A WinHttpRequest 5.1 összetevő a következő új lehetőségeket valósítja meg:

WinHttpRequestOption\_RevertImpersonationOverSsl WinHttpRequestOption\_EnableHttpsToHttpRedirects WinHttpRequestOption\_EnablePassportAuthentication

A Következő új WinHttpRequest 5.1-beállítások érhetők el a Windows Server 2003-tól kezdve a Windows XP sp2-vel:

"WinHttpRequestOption\_MaxAutomaticRedirects" "WinHttpRequestOption\_MaxResponseHeaderSize" "WinHttpRequestOption\_MaxResponseDrainSize" "WinHttpRequestOptions\_EnableHttp1\_1"

A proxyk nem megbízhatók, ha az automatikus bejelentkezés biztonsága magasra van állítva

A WinHTTP 5.0-ben a proxykiszolgálók mindig megbízhatók az automatikus bejelentkezéshez. Ez már nem érvényes a Windows Server 2003-on és a Windows XP SP2-n futó WinHTTP 5.1 esetén, ha a WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH házirend-beállítás be van állítva.

Webes proxy automatikus felderítése (AutoProxy) API

A WinHTTP-alapú alkalmazások proxybeállításainak konfigurálásának megkönnyítése érdekében a WinHTTP most implementálja a webproxy auto-discovery (WPAD) protokollt, más néven autoproxy. Ez ugyanaz a protokoll, amelyet a webböngészők, például az Internet Explorer implementálnak a proxykonfiguráció automatikus felderítéséhez anélkül, hogy a végfelhasználóknak manuálisan kellene megadniuk a proxykiszolgálót. Az autoproxy támogatásához a WinHTTP 5.1 egy új C/C++ függvényt implementál, WinHttpGetProxyForUrl, valamint két támogató függvényt, WinHttpDetectAutoProxyConfigUrl és WinHttpGetIEProxyConfigForCurrentUser.

Ismert problémák

Az alábbi problémák ismertek a WinHTTP 5.1-ben a Windows 2000 Professional sp3 és a Windows XP SP1 rendszeren. Ezeket a problémákat a WinHTTP-vel oldották meg Windows Server 2003-tól és Windows XP SP2-től kezdve.

  • Ha az alkalmazás a WinHttpSetTimeouts függvénnyel vagy a WinHttpRequest összetevő SetTimeouts metódusával állít be nem végtelen DNS-feloldási időtúllépést, például a dwResolveTimeout paramétert, a szálkezelő szivárgása minden alkalommal megtörténik, amikor a WinHTTP felold egy DNS-nevet. Sok HTTP-kérés esetén ez jelentős memóriavesztést okoz. Az átmeneti megoldás az, hogy az alapértelmezett végtelen időtúllépési beállítást változatlanul hagyjuk (0 érték esetén a végtelen időtúllépést állítjuk be). Ez minden esetben erősen ajánlott, mivel a WinHTTP-ban a DNS-névfeloldásokhoz kapcsolódó időtúllépések támogatása teljesítmény szempontjából költséges. Windows 2000 és újabb rendszerek esetén a DNS-feloldás időtúllépésének beállítása a WinHTTP-ban szükségtelen, mivel a mögöttes DNS-ügyfélszolgáltatás saját feloldás időtúllépést valósít meg.
  • Az aszinkron kérések feldolgozásakor a WinHTTP nem kezeli megfelelően a szálak megszemélyesítését. Ez az NTLM-hitelesítést/egyeztetési hitelesítést igénylő kéréseket eredményezi, kivéve, ha a hitelesítő adatokat kifejezetten a WinHttpSetCredentials vagy WinHttpSetOption függvény használatával adják meg.