HTTP & HTTPS — Web Fundamentals

HTTP (HyperText Transfer Protocol) adalah protokol yang digunakan browser dan server untuk berkomunikasi. Setiap kali kamu membuka halaman web, browser…

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>

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:

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

💡 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.

Yang akan kamu pelajari