Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan beberapa pengecualian, WinINet adalah superset WinHTTP. Saat memilih di antara keduanya, Anda sebaiknya menggunakan WinINet kecuali jika Anda berencana menjalankannya dalam proses layanan atau proses serupa layanan yang memerlukan impersonasi dan isolasi sesi.
Perbandingan fitur
| Fitur | WinINet | WinHTTP |
|---|---|---|
| Tembolok kredensial. Memungkinkan semua aplikasi bawaan di Windows Internet Explorer mendapatkan kredensial secara otomatis. Ini juga memungkinkan aplikasi yang berjalan di luar Internet Explorer untuk meminta/menentukan kredensial untuk server hanya sekali. Sejak saat itu permintaan bersifat otomatis. | Ya | Tidak |
| Permintaan kredensial. Menyediakan API yang memungkinkan kode panggilan untuk meminta kredensial kepada pengguna. | Ya | Tidak |
| FTP | Ya | Tidak |
| dukungan Autodial/RAS. Ini adalah fungsionalitas warisan. Gunakan Akses Jarak Jauh sebagai gantinya. | Ya | Tidak |
| Zona. Integrasi otomatis dengan zona keamanan Internet Explorer. | Ya | Tidak |
| Dukungan IDNA. Dukungan terintegrasi untuk IDNA RFC/Punycode. | Ya | Ya |
| API Cookie Jar. Cookie persisten dan non-persisten didukung. Aplikasi atau skrip apa pun dapat menggunakan ini untuk melihat cookie yang sama dengan browser. | Ya | Tidak |
| Dukungan untuk Mode Terlindungi IE | Ya | Tidak |
| dukungan Dekompresi. Dukungan untuk skema kompresi gzip dan deflate. | Ya | Ya |
| dukungan unggahan terpotong. Kode klien harus membagi data menjadi beberapa chunk. | Tidak | Ya |
| SOCKS4 (SOCKS versi 4) mendukung. Tidak termasuk v4a. | Ya | Tidak |
| SOCKS5 (SOCKS versi 5) mendukung | Tidak | Tidak |
| Pengiriman dan penerimaan dua arah | Tidak | Tidak |
| I/O yang Tumpang Tindih | Tidak | Tidak |
| Dukungan skema file. Berguna untuk skrip proksi yang menggunakan skema file. | Ya | Tidak |
| InternetOpenUrl. Kode yang disederhanakan untuk membuka URL. | Ya | Tidak |
| Dukungan layanan. Dapat dijalankan melalui layanan atau akun layanan. | Tidak | Ya |
| isolasi Sesi. Sesi terpisah tidak berdampak satu sama lain. | Tidak | Ya |
| peniruan identitas. Mendukung untuk dipanggil saat thread sedang menjalankan peniruan identitas pengguna lain. | Tidak | Ya |
Topik terkait
Panduan keputusan cepat
Gunakan diagram alur ini untuk memilih tumpukan klien HTTP yang tepat:
-
Apakah kode Anda berjalan di layanan Windows, proses sistem, atau dalam mode penyamaran identitas?
- Ya → Gunakan WinHTTP.
-
Apakah kode Anda adalah aplikasi desktop yang memerlukan pengaturan proksi, cookie, atau perintah kredensial Opsi Internet (IE) pengguna?
- Ya → Gunakan WiniNet.
-
Apakah Anda menulis desktop C++ modern atau aplikasi UWP/WinUI?
- Ya → Gunakan Windows. Web.Http (C++/WinRT melalui Windows. Namespace Web.Http).
-
Apakah Anda menulis aplikasi .NET?
- Ya → Gunakan System.Net.Http.HttpClient.
-
Apakah Anda memerlukan kompatibilitas lintas platform?
- Ya → Gunakan libcurl atau pustaka portabel serupa.
Note
Kapan tidak menggunakan WinINet maupun WinHTTP — Jika Anda mengembangkan aplikasi baru dan tidak memerlukan integrasi Win32 legacy, pilih alternatif modern yang tercantum di atas. Mereka menawarkan API yang lebih sederhana dan dukungan asinkron yang lebih baik. Beberapa alternatif juga menawarkan manfaat tambahan: libcurl dan .NET HttpClient adalah lintas platform; Ketersediaan TLS 1.3 tergantung pada tumpukan TLS dan konfigurasi OS yang mendasar. Gunakan WinHTTP/WinINet hanya untuk skenario yang secara khusus memerlukan dukungan layanan Win32, berbagi kredensial dengan browser, atau integrasi proksi yang mendalam.
Important
Pengingat keamanan — Terlepas dari tumpukan HTTP mana yang Anda pilih, jangan pernah nonaktifkan validasi sertifikat TLS dalam produksi. WinHTTP dan WinINet memungkinkan pengabaian kesalahan sertifikat melalui flag, tetapi tindakan tersebut membuat aplikasi Anda rentan terhadap serangan man-in-the-middle.