HTTP (HyperText Transfer Protocol) adalah protokol yang digunakan browser dan server untuk berkomunikasi. Setiap kali kamu membuka halaman web, browser mengirim HTTP request dan server membalas dengan HTTP response.
Anatomi HTTP Request:
GET /api/users HTTP/1.1
Host: belajarweb.dev
Accept: application/json
Authorization: Bearer token123
Komponen request:
- Method — apa yang ingin dilakukan (GET, POST, PUT, DELETE)
- Path — resource yang diminta (
/api/users) - Headers — metadata tambahan (tipe konten, auth, dll)
- Body — data yang dikirim (untuk POST/PUT)
Anatomi HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=3600
{"users": [{"name": "Budi"}, {"name": "Ani"}]}
Komponen response:
- Status code — hasil request (200 OK, 404 Not Found, dll)
- Headers — metadata response
- Body — data yang diminta
HTTP vs HTTPS:
| Aspek | HTTP | HTTPS |
|---|---|---|
| Port default | 80 | 443 |
| Enkripsi | Tidak ada | TLS/SSL |
| Keamanan | Data bisa disadap | Data terenkripsi |
| SEO | Tidak diutamakan | Google prioritaskan |
| Sertifikat | Tidak perlu | Butuh SSL certificate |
Bagaimana HTTPS bekerja:
- Browser meminta koneksi aman
- Server mengirim SSL certificate (berisi public key)
- Browser memverifikasi sertifikat dengan Certificate Authority
- Browser membuat session key dan mengenkripsinya dengan public key server
- Server mendekripsi dengan private key
- Keduanya berkomunikasi menggunakan session key (symmetric encryption)
Proses ini disebut TLS handshake dan terjadi sebelum data apapun dikirim.
HTTP/2 dan HTTP/3:
- HTTP/1.1 — satu request per koneksi TCP, head-of-line blocking
- HTTP/2 — multiplexing (banyak request dalam satu koneksi), header compression, server push
- HTTP/3 — menggunakan QUIC (berbasis UDP), lebih cepat di jaringan tidak stabil
// Contoh fetch request di JavaScript:
const response = await fetch("https://api.example.com/data", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer mytoken"
}
});
const data = await response.json();
console.log(data);
Selalu gunakan HTTPS di production. Layanan seperti Let's Encrypt menyediakan SSL certificate gratis.