關於 WinHTTP

注意

對於自 Windows 10 版本 1709 起的應用程式容器和系統服務,HTTP/2 (預設會開啟RFC7540) 。

Microsoft Windows HTTP Services (WinHTTP) 提供 HTTP/2 和 1.1 網際網路通訊協定的伺服器支援高階介面。 WinHTTP 的設計主要是供與 HTTP 伺服器通訊的伺服器應用程式在伺服器架構案例中使用。

WinINet 設計為互動式桌面應用程式的 HTTP 用戶端平臺。 WinINet 會顯示某些作業的使用者介面,例如收集使用者認證。 不過,WinHTTP 會以程式設計方式處理這些作業。 需要 HTTP 用戶端服務的伺服器應用程式應該使用 WinHTTP,而不是 WinINet。 如需詳細資訊,請參閱 將 WinINet 應用程式移植到 WinHTTP

WinHTTP 也設計用於系統服務和 HTTP 型用戶端應用程式。 不過,需要 FTP 通訊協定功能、Cookie 持續性、快取、自動認證對話方塊處理、Internet Explorer 相容性或下層平臺支援的單一使用者應用程式,應考慮使用 WinINet

此介面可從 C/C++ 存取,方法是使用 WinHTTP 應用程式開發介面 (API) ,或使用IWinHttpRequest 和 IWinHttpRequestEvents介面。 WinHTTP 也可以透過 WinHTTP 物件從腳本和 Microsoft Visual Basic 存取。 如需個別函式的詳細資訊和描述,請參閱特定語言的 WinHTTP 函式參考。

從Windows 8開始,WinHTTP 會提供 API,以使用WebSocket 通訊協定l 啟用連線,例如WinHttpWebSocketSendWinHttpWebSocketReceive

警告

除了非同步完成回呼期間,WinHTTP 不會重新進入。 也就是說,當執行緒對其中一個 WinHTTP 函式的呼叫擱置中,例如 WinHttpSendRequest、WinHttpReceiveResponse、WinHttpQueryDataAvailable、WinHttpSendData 或 WinHttpWriteData,在第一次呼叫完成之前,它絕對不能第二次呼叫 WinHTTP。 發生第二次呼叫的其中一個案例如下:如果應用程式將非同步過程呼叫排入佇列 (APC) 到呼叫 WinHTTP 的執行緒,而且 WinHTTP 在內部執行可警示的等候時,APC 可以執行。 如果 APC 常式也發生呼叫 WinHTTP,它會重新輸入 WinHTTP API,而且 WinHTTP 的內部狀態可能會損毀。

WinHTTP 5.1 功能

下列功能已新增至 WinHTTP 5.1 版:

  • IPv6 支援。
  • AutoProxy 功能。
  • HTTP/1.0 通訊協定,包括支援持續運作 (持續性) 連線和會話 Cookie。
  • HTTP/1.1 區塊傳輸支援 HTTP 回應。
  • 跨會話保持匿名連線的保持運作共用。
  • 安全通訊端層 (SSL) 功能,包括用戶端憑證。 支援的 SSL 通訊協定包括:SSL 2.0、SSL 3.0 和傳輸層安全性 (TLS) 1.0。
  • 支援伺服器和 Proxy 驗證,包括 Microsoft Passport 1.4 和 Negotiate/ Kerberos 套件的整合式支援。
  • 除非隱藏,否則自動處理重新導向。
  • 除了 API 之外,還有可編寫腳本的介面。
  • 追蹤公用程式可協助針對問題進行疑難排解。

WinHTTP 不支援許多 WinINet 功能,包括 URL 快取和持續性 Cookie、autoproxy、自動dialing、離線支援,以及 FTP) (檔案傳輸通訊協定。

如需 5.1 版中引進之變更的詳細資訊,請參閱 WinHTTP 5.1 的新功能

使用 WinHTTP 消費者入門

如需 WinHTTP 的詳細資訊,請參閱下列主題。