HTTP (HyperText Transfer Protocol) adalah bahasa yang dipakai browser dan server untuk berkomunikasi. Browser mengirim request (permintaan), server membalas dengan response (jawaban). HTTPS adalah HTTP yang sama, tapi isinya dienkripsi (diacak) supaya gak bisa dibaca orang di tengah jalan.
🧪 Tebakan cepat: kamu login di WiFi kafe ke situs yang masih pakai
http://. Bisa gak orang lain di WiFi itu membaca password-mu? Tebak dulu, jawabannya ada di bagian "HTTPS: HTTP yang dienkripsi".
Request dan response
Waktu kamu membuka belajarweb.dev/kelas, browser mengirim request ini, lalu server membalas dengan response di bawahnya:
GET /kelas HTTP/1.1
Host: belajarweb.dev
Accept: text/html
HTTP/1.1 200 OK
Content-Type: text/html
<h1>Daftar Kelas</h1>
GETadalah method, apa yang mau dilakukan.GETartinya ambil.POSTartinya kirim data baru, misalnya isi form./kelasadalah path, halaman atau data mana yang diminta.Host: belajarweb.devdanAccept: text/htmladalah header: info tambahan berbentukNama: nilai, satu per baris.Hostmenyebut situsnya,Acceptmenyebut jenis isi yang browser mau.200 OKdi baris pertama response adalah status code, angka tiga digit yang memberi tahu hasilnya.Content-Type: text/htmladalah header response yang menyebut jenis isi kirimannya.- Sesudah baris kosong ada body, isi kirimannya. Di sini HTML halaman. Request
POSTjuga punya body, isinya data form.
Status code dan redirect
Digit pertama status code menunjukkan kelompoknya:
| Kelompok | Artinya | Contoh |
|---|---|---|
| 2xx | berhasil | 200 OK, 201 Created |
| 3xx | pindah ke alamat lain | 301 Moved Permanently, 302 Found |
| 4xx | ada yang salah di permintaan | 404 Not Found, 401 Unauthorized |
| 5xx | ada yang salah di server | 500 Internal Server Error |
Response 3xx membawa header Location berisi alamat baru. Browser membacanya lalu otomatis membuka alamat itu, tanpa kamu klik apa pun. Ini disebut redirect. 301 artinya pindah permanen, jadi browser mengingatnya dan lain kali langsung ke alamat baru. 302 artinya pindah sementara.
HTTPS: HTTP yang dienkripsi
Di HTTP biasa, request dan response jalan sebagai teks biasa. Router di tengah jalan, atau orang lain di WiFi yang sama, bisa membaca isinya, termasuk password. Itu jawaban tebakannya: bisa.
HTTPS menambahkan TLS (Transport Layer Security), lapisan pengaman di antara HTTP dan TCP. Sesudah jabat tangan TCP, ada jabat tangan TLS yang melakukan dua hal:
- Membuktikan servernya asli. Server menunjukkan sertifikat, kartu identitas digital yang ditandatangani lembaga tepercaya (Certificate Authority). Browser mengecek sertifikat itu memang untuk domain ini dan masih berlaku.
- Menyepakati kunci rahasia. Browser dan server bertukar beberapa angka, lalu masing-masing menghitung kunci rahasia yang sama. Kuncinya sendiri gak pernah dikirim lewat jaringan.
Sesudah itu, semua request dan response dienkripsi dengan kunci tadi. Penyadap cuma melihat data acak.
Server menunggu sambungan di nomor port, mirip nomor pintu di satu gedung. HTTP memakai port 80, HTTPS memakai port 443. Browser memilihnya otomatis dari awalan alamat, jadi kamu jarang melihatnya. Pakai HTTPS di semua halaman, bukan cuma halaman login. Sertifikatnya bisa didapat gratis, misalnya dari Let’s Encrypt.
⚠️ Jebakan yang sering ketemu
- Gembok bukan berarti situsnya jujur. HTTPS cuma menjamin sambunganmu rahasia dan servernya benar pemilik domain itu. Situs penipuan juga bisa punya sertifikat, jadi tetap cek nama domainnya.
- Mixed content. Script yang dimuat lewat
http://di halaman HTTPS diblokir browser. Pakaihttps://untuk semua alamat gambar, script, dan CSS. - 301 yang salah susah ditarik. Browser menyimpan redirect permanen. Selama masih mencoba, pakai
302. - Gak semua tersembunyi. HTTPS menyembunyikan path, header, dan body. Alamat IP server, dan biasanya nama domainnya, tetap terlihat oleh jaringan.
💡 HTTP/1.1, HTTP/2, HTTP/3. Bentuk request dan response-nya sama: method, path, header, status code, body. Yang beda cara mengirimnya. HTTP/2 mengirim banyak request sekaligus dalam satu sambungan TCP. HTTP/3 jalan di atas QUIC (di atas UDP), dengan TLS 1.3 di dalamnya. Biasanya server yang mengurus ini, kodemu gak perlu berubah.
TL;DR: Browser mengirim request (method, path, header, kadang body), server membalas response (status code, header, body). Status 2xx berhasil, 3xx pindah, 4xx salah di permintaan, 5xx salah di server. Pada 301 atau 302, browser otomatis membuka alamat di header Location. HTTPS adalah HTTP plus TLS: servernya dibuktikan lewat sertifikat dan isinya dienkripsi, jadi gak bisa dibaca di tengah jalan. HTTP memakai port 80, HTTPS port 443.