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


AutoProxy-problémák a WinHTTP-ban

A WinHTTP autoproxy funkció használatakor vegye figyelembe az alábbi fontos problémákat.

Jelenleg csak egy proxykiszolgáló támogatott

A WinHTTP jelenleg nem támogatja azokat a proxykonfigurációkat, amelyek egynél több proxykiszolgálót határoznak meg. Ha WinHttpGetProxyForUrl egy WINHTTP_PROXY_INFO struktúrát ad vissza, amely tartalmazza a proxykiszolgálók listáját, amelyet az alkalmazás ezután a kéréskezelőre állít be a WINHTTP_OPTION_PROXY beállítással, a WinHTTP csak az első proxykiszolgálót használja a listában. Ha a proxykiszolgáló nem érhető el, a WinHTTP nem végzi el a feladatátvételt a listában szereplő többi proxykiszolgálóra. Az alkalmazásnak kell kezelnie ezt az esetet úgy, hogy újra beállítja a WINHTTP_OPTION_PROXY beállítást a következő proxykiszolgálóval a listában, és újra meg kell küldenie a kérést.

Biztonsági kockázatcsökkentés

A proxy automatikus konfigurációs fájljának feldolgozásához le kell futtatni a letöltött szkriptkódot. Megfontolandó biztonsági problémák: Ha a PAC-fájlt tartalmazó kiszolgáló biztonsága sérült, lehetséges, hogy a PAC-szkript kódja rosszindulatú. Ezért a WinHTTP az alábbi óvintézkedéseket alkalmazza az ügyfél védelmére:

  1. A szkriptkód nem hozható létre ActiveX-objektumok példányosításában. Ez számos potenciálisan veszélyes funkciót blokkol, például a fájlok elérését és a hálózati I/O-műveletek elvégzését.

  2. **Windows Server 2003: **WinHttpGetProxyForUrl delegálja a teljes WPAD-feldolgozást egy külső folyamaton kívüli szolgáltatásba, a WinHTTP webproxy automatikus felderítési szolgáltatásba, amely az alacsony jogosultságú helyi szolgáltatás beépített felhasználói fiókja alatt fut.

  3. Windows XP SP2-vel és Windows Server 2003-tal: A PAC-szkript végrehajtása 60 másodpercnél hosszabb ideig nem engedélyezett, amely után a szkript végrehajtása leáll.

  4. Windows XP SP2 és Windows Server 2003 esetén: WinHTTP elutasítja az 1 MB-nál nagyobb PAC-fájlokat. Egy tipikus PAC-fájl általában legfeljebb néhány kilobájt méretű.

Vegye figyelembe, hogy a PAC-szkriptkód feldolgozásához COM-t kell használni, mivel a WinHTTP Microsoft JScript-összetevőt használ a szkript végrehajtásához. Ha a WinHTTP nem tudja delegálni a WPAD protokollfeldolgozást egy külső, folyamaton kívüli webes proxy automatikus felderítési szolgáltatásba, WinHttpGetProxyForUrl betölti a COM-futtatókörnyezetet az alkalmazásfolyamaton belül a hívás időtartamára. Ha maga az alkalmazás már használja a COM-t, ez nem jelenthet problémát.

Teljesítménnyel kapcsolatos szempontok

Az automatikus észlelési folyamat lassú lehet, akár több másodpercig is. A WinHttpGetProxyForUrl és WinHttpDetectAutoProxyConfigUrl függvények blokkolják a szinkron függvényeket. Előfordulhat, hogy egy adott automatikus észlelési mechanizmus (például DHCP) sokkal lassabb, mint a másik (például a DNS). Ha a WINHTTP_AUTO_DETECT_TYPE_DHCP és az WINHTTP_AUTO_DETECT_TYPE_DNS_A automatikus észlelési jelző is meg van adva, a WinHTTP először a DHCP-t használja a WPAD specifikációjának megfelelően. Ha egy DHCP-kérés kiadásával nem talál PAC URL-címet, a WinHTTP egy jól ismert DNS-címen próbálja megtalálni a PAC-fájlt.

WinHttpGetProxyForUrl a WinHTTP session handle paramétert használja a PAC-fájl gyorsítótárazásához és az automatikus észlelés eredményeihez. A legjobb, ha ugyanazt a munkamenet-leírót használja több WinHttpGetProxyForUrl hívásokhoz, ha lehetséges, hogy elkerülje az ismétlődő PAC URL-észlelést és fájlletöltést. A PAC-fájl csak a memóriában gyorsítótárazva van, és a rendszer elveti, amikor az alkalmazás bezárja a munkamenet-leírót.

Az autoproxy teljesítményre gyakorolt hatása miatt javasoljuk, hogy csak az asztali ügyfélalkalmazások vagy -szolgáltatások használják ezt a funkciót; a kiszolgálóalapú alkalmazásoknak a kiszolgáló rendszergazdájára kell támaszkodniuk a "ProxyCfg.exe" segédprogrammal.