Delen via


Problemen met AutoProxy in WinHTTP

Houd rekening met de volgende belangrijke problemen bij het gebruik van de functie WinHTTP autoproxy.

Er wordt momenteel slechts één proxyserver ondersteund

WinHTTP biedt momenteel geen ondersteuning voor proxyconfiguraties die meer dan één proxyserver opgeven. Als WinHttpGetProxyForUrl een WINHTTP_PROXY_INFO structuur retourneert die een lijst met proxyservers bevat, die de toepassing vervolgens instelt op de aanvraaghandler met behulp van de optie WINHTTP_OPTION_PROXY, gebruikt WinHTTP alleen de eerste proxyserver in de lijst. Als deze proxyserver niet toegankelijk is, voert WinHTTP geen failover uit naar een van de andere proxyservers in de lijst. Het is aan de toepassing om dit geval af te handelen door de optie WINHTTP_OPTION_PROXY opnieuw in te stellen met de volgende proxyserver in de lijst en de aanvraag opnieuw te verzenden.

Risicobeperking voor beveiliging

Voor het verwerken van het proxybestand voor automatische configuratie is het uitvoeren van gedownloade scriptcode vereist. Enkele beveiligingsproblemen waarmee u rekening moet houden: als de server waarop het PAC-bestand zich bevindt, is aangetast, is het mogelijk dat de PAC-scriptcode schadelijk is. Daarom gebruikt WinHTTP de volgende voorzorgsmaatregelen om de client te beschermen:

  1. De scriptcode kan geen ActiveX-objecten instantiëren. Dit blokkeert veel potentieel gevaarlijke functionaliteit, zoals de mogelijkheid om bestanden te openen en netwerk-I/O uit te voeren.

  2. **Windows Server 2003: **WinHttpGetProxyForUrl delegeert de volledige WPAD-verwerking naar een externe out-of-process service, de WinHTTP Web Proxy Auto-Discovery-service, die wordt uitgevoerd onder het ingebouwde gebruikersaccount met beperkte bevoegdheden van de lokale service.

  3. Windows XP met SP2 en Windows Server 2003: een PAC-script mag niet langer dan 60 seconden worden uitgevoerd, waarna de uitvoering van het script is beëindigd.

  4. Windows XP met SP2 en Windows Server 2003: WinHTTP weigert PAC-bestanden die groter zijn dan 1 MB. Een typisch PAC-bestand is meestal niet meer dan een paar kilobytes groot.

Houd er rekening mee dat het verwerken van de PAC-scriptcode het gebruik van COM vereist, omdat WinHTTP gebruikmaakt van het Microsoft JScript-onderdeel om het script uit te voeren. Als WinHTTP de verwerking van het WPAD-protocol niet kan delegeren aan een externe, niet-verwerkte webproxy autodetectieservice, WinHttpGetProxyForUrl de COM-runtime voor de duur van de aanroep laadt binnen het toepassingsproces. Als de toepassing zelf al COM gebruikt, is dit geen probleem.

Prestatieoverwegingen

Het proces voor automatische detectie kan traag zijn, mogelijk zo lang als enkele seconden. De WinHttpGetProxyForUrl- en WinHttpDetectAutoProxyConfigUrl functies blokkeren, synchrone functies. Het kan zijn dat een bepaald mechanisme voor automatische detectie (zoals DHCP) veel langzamer is dan de andere (zoals DNS). Als zowel de WINHTTP_AUTO_DETECT_TYPE_DHCP als WINHTTP_AUTO_DETECT_TYPE_DNS_A vlaggen voor automatische detectie zijn opgegeven, gebruikt WinHTTP eerst DHCP, in overeenstemming met de WPAD-specificatie. Als er geen PAC-URL wordt gedetecteerd door een DHCP-aanvraag uit te geven, probeert WinHTTP het PAC-bestand te vinden op een bekend DNS-adres.

WinHttpProxyForUrl gebruikt de winHTTP-sessiehandlerparameter voor het opslaan van het PAC-bestand en de resultaten van automatische detectie. Het is raadzaam om dezelfde sessiehandgreep te gebruiken voor meerdere WinHttpGetProxyForUrl-aanroepen, indien mogelijk om herhaalde PAC-URL-detectie en het downloaden van bestanden te voorkomen. Het PAC-bestand wordt alleen in het geheugen opgeslagen en wordt verwijderd wanneer de toepassing de sessiegreep sluit.

Vanwege de invloed op de prestaties van autoproxy wordt aanbevolen dat alleen desktopclienttoepassingen of -services de functie gebruiken; servertoepassingen moeten afhankelijk zijn van de serverbeheerder met behulp van het hulpprogramma 'ProxyCfg.exe'.