Condividi tramite


Informazioni su WinHTTP

Nota

Per i contenitori di app e i servizi di sistema da Windows 10, versione 1709, HTTP/2 (vedere RFC7540) è attivo per impostazione predefinita.

Microsoft Windows HTTP Services (WinHTTP) offre un'interfaccia di alto livello e supportata dal server ai protocolli HTTP/2 e 1.1 Internet. WinHTTP è progettato per essere usato principalmente negli scenari basati sul server da applicazioni server che comunicano con server HTTP.

WinINet è stato progettato come piattaforma client HTTP per applicazioni desktop interattive. WinINet visualizza un'interfaccia utente per alcune operazioni, ad esempio la raccolta delle credenziali utente. WinHTTP gestisce tuttavia queste operazioni a livello di codice. Le applicazioni server che richiedono servizi client HTTP devono usare WinHTTP anziché WinINet. Per altre informazioni, vedere Conversione di applicazioni WinINet in WinHTTP.

WinHTTP è progettato anche per l'uso nei servizi di sistema e nelle applicazioni client basate su HTTP. Tuttavia, le applicazioni a utente singolo che richiedono funzionalità del protocollo FTP, persistenza dei cookie, memorizzazione nella cache, gestione automatica delle credenziali, compatibilità di Internet Explorer o supporto della piattaforma downlevel devono considerare l'uso di WinINet.

Questa interfaccia è accessibile da C/C++ usando l'interfaccia di programmazione dell'applicazione WinHTTP (API) o usando le interfacce IWinHttpRequest e IWinHttpRequestEvents. WinHTTP è anche accessibile dallo script e da Microsoft Visual Basic tramite l'oggetto WinHTTP. Per altre informazioni e descrizioni delle singole funzioni, vedere il riferimento alle funzioni WinHTTP per il linguaggio specifico.

A partire da Windows 8, WinHTTP fornisce API per abilitare le connessioni usando il protocollo WebSocketl, ad esempio WinHttpWebSocketSend e WinHttpWebSocketReceive.

Attenzione

WinHTTP non è reentrant tranne durante il callback di completamento asincrono. Ovvero, mentre un thread ha una chiamata in sospeso a una delle funzioni WinHTTP, ad esempio WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData o WinHttpWriteData, non deve mai chiamare WinHTTP una seconda volta fino al completamento della prima chiamata. Uno scenario in cui può verificarsi una seconda chiamata è il seguente: se un'applicazione accoda una chiamata asincrona (APC) al thread che chiama in WinHTTP e se WinHTTP esegue un'attesa avvisabile internamente, il servizio APC può essere eseguito. Se la routine APC si verifica anche per chiamare WinHTTP, reenter l'API WinHTTP e lo stato interno di WinHTTP può essere danneggiato.

Funzionalità winHTTP 5.1

Le funzionalità seguenti sono state aggiunte nella versione 5.1 di WinHTTP:

  • Supporto di IPv6.
  • Funzionalità di AutoProxy.
  • Protocollo HTTP/1.0, incluso il supporto per connessioni keep-alive (persistenti) e cookie di sessione.
  • Supporto del trasferimento in blocchi HTTP/1.1 per le risposte HTTP.
  • Pool di connessioni anonime tra sessioni.
  • Funzionalità Secure Sockets Layer (SSL), inclusi i certificati client. I protocolli SSL supportati includono i seguenti: SSL 2.0, SSL 3.0 e Transport Layer Security (TLS) 1.0.
  • Supporto per l'autenticazione server e proxy, incluso il supporto integrato per Microsoft Passport 1.4 e il pacchetto Negotiate/ Kerberos .
  • Gestione automatica dei reindirizzamenti a meno che non sia stata eliminata.
  • Interfaccia scriptabile oltre all'API.
  • Utilità di traccia per risolvere i problemi.

Alcune funzionalità di WinINet non sono supportate in WinHTTP, tra cui la memorizzazione nella cache degli URL e i cookie persistenti, la reimpostazione automatica, il supporto automatico, il supporto offline e il protocollo FTP (File Transfer Protocol).

Per altre informazioni sulle modifiche introdotte nella versione 5.1, vedere Novità di WinHTTP 5.1.

Introduzione con WinHTTP

Per altre informazioni su WinHTTP, vedere gli argomenti seguenti.