共用方式為


關於 WinHTTP

注意

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

Microsoft Windows HTTP 服務 (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),或使用 IWinHttpRequestIWinHttpRequestEvents 介面。 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 通訊協定,包括支援持續性(Keep-Alive)連線和會話 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、自動代理、自動撥號、離線支援,以及檔案傳輸通訊協定 (FTP)。

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

開始使用 WinHTTP

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