HTTP/HTTPS
Hypertext Transfer Protocol (HTTP)
HTTP adalah protokol aplikasi yang menjadi fondasi komunikasi data di World Wide Web. HTTP mengikuti model request-response klasik, di mana klien (biasanya web browser) mengirim permintaan ke server, dan server mengembalikan respons.
HTTP Methods
Setiap permintaan HTTP memiliki method yang menunjukkan aksi yang diinginkan:
- GET - Mengambil sumber daya dari server. Tidak memiliki request body dan bersifat idempoten (aman diulang tanpa efek samping).
- POST - Mengirim data ke server untuk membuat sumber daya baru. Tidak idempoten.
- PUT - Memperbarui sumber daya secara penuh di server. Idempoten.
- DELETE - Menghapus sumber daya dari server. Idempoten.
- PATCH - Memperbarui sebagian sumber daya. Tidak selalu idempoten.
- OPTIONS - Mengetahui metode HTTP apa yang didukung oleh server untuk suatu endpoint.
- HEAD - Sama seperti GET, tetapi server hanya mengembalikan header tanpa body. Berguna untuk pengecekan metadata.
HTTP Status Codes
Server mengembalikan status code tiga digit untuk mengindikasikan hasil permintaan:
| Kategori | Rentang | Contoh |
|---|---|---|
| 1xx - Informational | 100 - 199 | 100 Continue, 101 Switching Protocols |
| 2xx - Success | 200 - 299 | 200 OK, 201 Created, 204 No Content |
| 3xx - Redirection | 300 - 399 | 301 Moved Permanently, 302 Found, 304 Not Modified |
| 4xx - Client Error | 400 - 499 | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests |
| 5xx - Server Error | 500 - 599 | 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable |
HTTP Headers
Header HTTP mengirimkan metadata tambahan dalam permintaan dan respons.
Request Headers (dikirim oleh klien):
Host- Nama server tujuan (wajib di HTTP/1.1).User-Agent- Identitas perangkat lunak klien.Accept- Tipe konten yang dapat diterima klien.Authorization- Kredensial untuk autentikasi.Cookie- Mengirim cookie yang tersimpan.Content-Type- Tipe konten dalam body permintaan (misalapplication/json).
Response Headers (dikirim oleh server):
Set-Cookie- Menginstruksikan klien untuk menyimpan cookie.Cache-Control- Arahan caching untuk browser dan proxy.Access-Control-Allow-Origin- Pengaturan CORS untuk keamanan lintas domain.Strict-Transport-Security- Memaksa koneksi HTTPS (HSTS).
HTTPS dan TLS
HTTPS (HTTP Secure) adalah versi aman dari HTTP yang berjalan di atas protokol TLS (Transport Layer Security).
TLS Handshake
Sebelum data terenkripsi dikirim, klien dan server melakukan TLS handshake:
- Client Hello - Klien mengirim versi TLS, daftar cipher suite, dan nomor acak.
- Server Hello - Server memilih cipher suite, mengirim sertifikat SSL, dan nomor acak.
- Certificate Verification - Klien memverifikasi sertifikat server terhadap Certificate Authority (CA) yang terpercaya.
- Key Exchange - Klien menghasilkan pre-master secret, mengenkripsinya dengan kunci publik server, dan mengirimkannya.
- Session Keys - Kedua pihak menurunkan session key simetris dari pre-master secret.
- Secure Connection - Semua data selanjutnya dienkripsi menggunakan session key simetris.
SSL Certificates
Sertifikat SSL/TLS adalah dokumen digital yang mengikat identitas sebuah situs web dengan kunci publik. Sertifikat diterbitkan oleh Certificate Authority (CA) yang tepercaya. Jenis sertifikat meliputi:
- Domain Validation (DV) - Verifikasi kepemilikan domain saja.
- Organization Validation (OV) - Verifikasi kepemilikan domain dan identitas organisasi.
- Extended Validation (EV) - Verifikasi paling ketat, menampilkan nama organisasi di bilah alamat browser.
HSTS (HTTP Strict Transport Security)
HSTS adalah mekanisme keamanan yang memaksa browser untuk hanya
berkomunikasi dengan server melalui HTTPS. Server mengirim
header Strict-Transport-Security yang memberi
tahu browser untuk secara otomatis mengonversi semua tautan HTTP
menjadi HTTPS untuk periode waktu tertentu (max-age). Ini
mencegah serangan SSL stripping.
HTTP/2 vs HTTP/1.1
HTTP/2 membawa sejumlah peningkatan signifikan dibanding HTTP/1.1:
- Multiplexing - HTTP/1.1 hanya dapat mengirim satu permintaan per koneksi TCP (head-of-line blocking). HTTP/2 memungkinkan banyak permintaan dan respons dikirim secara bersamaan melalui satu koneksi.
- Server Push - Server dapat mengirim sumber daya tambahan (seperti CSS/JS) tanpa diminta klien.
- Header Compression - HTTP/2 menggunakan HPACK untuk mengompresi header, mengurangi overhead.
- Binary Protocol - HTTP/1.1 berbasis teks (mudah dibaca tetapi lambat diparsing). HTTP/2 berbasis biner yang lebih efisien.
- Prioritization - HTTP/2 memungkinkan klien menentukan prioritas sumber daya yang diminta.
Meskipun HTTP/2 lebih canggih, sebagian besar browser modern tetap menyediakan fallback ke HTTP/1.1 jika server tidak mendukung HTTP/2. Keamanan tetap dijamin selama HTTPS digunakan di kedua versi.