Hypertext Transfer Protocol (HTTP)
Pengantar
HTTP (Hypertext Transfer Protocol) adalah protokol yang digunakan untuk mentransfer data di World Wide Web. Protokol ini merupakan fondasi dari komunikasi data dalam web, memungkinkan klien (seperti browser) dan server saling bertukar informasi dengan struktur yang terdefinisi.
"HTTP adalah bahasa yang digunakan oleh browser dan server untuk berkomunikasi."
Apa Itu HTTP?
Definisi
HTTP adalah protokol stateless tingkat aplikasi untuk sistem informasi hipermedia yang terdistribusi dan kolaboratif. Ini memungkinkan pengambilan sumber daya seperti HTML dokumen, gambar, video, dan lainnya dari server ke klien.
Karakteristik
- Stateless: Server tidak menyimpan informasi antara permintaan.
- Request-Response Model: Klien mengirim permintaan, server memberikan respons.
- Mendukung Berbagai Jenis Data: HTML, JSON, XML, gambar, dll.
Sejarah Versi HTTP
| Versi | Tahun Rilis | Fitur Utama |
|---|---|---|
| HTTP 0.9 | 1991 | Hanya mendukung metode GET, tanpa header atau status code. |
| HTTP 1.0 | 1996 | Menambahkan header, metode POST dan HEAD, serta dukungan tipe media. |
| HTTP 1.1 | 1997 | Persistent connection, host header, chunked transfer encoding. |
| HTTP/2 | 2015 | Multiplexing, kompresi header, server push. |
| HTTP/3 | 2022 | Menggunakan protokol QUIC (UDP), lebih cepat dan aman. |
Cara Kerja HTTP
Model Request-Response
- Klien (Browser) mengirim permintaan (request) ke server.
- Server menerima permintaan, memprosesnya, lalu mengirim respons.
- Respons berisi data yang diminta atau pesan kesalahan jika permintaan gagal.
Struktur Pesan
Request Message
<Method> <Path> HTTP/<Version>
<Header-Field>: <Value>
...
<Header-Field>: <Value>
[Body (opsional)]Response Message
HTTP/<Version> <Status-Code> <Reason-Phrase>
<Header-Field>: <Value>
...
<Header-Field>: <Value>
[Body]Metode HTTP (HTTP Methods)
| Method | Fungsi | Idempoten | Aman |
|---|---|---|---|
| GET | Mengambil data dari server | ✅ | ✅ |
| POST | Mengirim data baru ke server | ❌ | ❌ |
| PUT | Memperbarui seluruh data sumber daya | ✅ | ❌ |
| DELETE | Menghapus sumber daya | ✅ | ❌ |
| HEAD | Sama seperti GET, tapi hanya mengambil header | ✅ | ✅ |
| OPTIONS | Mendapatkan opsi komunikasi dari server | ✅ | ✅ |
| PATCH | Memperbarui sebagian dari sumber daya | ❌ | ❌ |
Perbedaan Dasar antara GET dan POST
| Aspek | GET | POST |
|---|---|---|
| Data Kirim | Melalui URL (query string) | Di dalam body request |
| Keamanan | Tidak aman untuk data sensitif | Lebih aman daripada GET |
| Caching | Dapat dicache | Tidak dapat dicache |
| Bookmark | Bisa | Tidak bisa |
| Panjang Data | Terbatas (tergantung panjang URL) | Tidak terbatas |
| Idempoten | ✅ | ❌ |
💡 Tips Belajar: Gunakan GET untuk mengambil data dan POST untuk mengirim/menambah data.
Status Code HTTP
Kelompok 1xx – Informasi
| Kode | Arti |
|---|---|
| 100 Continue | Server siap menerima sisa permintaan. |
| 101 Switching Protocols | Klien meminta perubahan protokol, server setuju. |
Kelompok 2xx – Sukses
| Kode | Arti |
|---|---|
| 200 OK | Permintaan berhasil. |
| 201 Created | Sumber daya baru berhasil dibuat. |
| 204 No Content | Permintaan berhasil tetapi tidak ada konten untuk dikembalikan. |
Kelompok 3xx – Redireksi
| Kode | Arti |
|---|---|
| 301 Moved Permanently | Sumber daya telah dipindahkan secara permanen. |
| 302 Found | Sumber daya sementara dipindahkan. |
| 304 Not Modified | Digunakan untuk caching; sumber daya tidak berubah. |
Kelompok 4xx – Kesalahan Klien
| Kode | Arti |
|---|---|
| 400 Bad Request | Format permintaan salah. |
| 401 Unauthorized | Autentikasi diperlukan. |
| 403 Forbidden | Akses ditolak. |
| 404 Not Found | Sumber daya tidak ditemukan. |
| 405 Method Not Allowed | Metode HTTP tidak diizinkan. |
Kelompok 5xx – Kesalahan Server
| Kode | Arti |
|---|---|
| 500 Internal Server Error | Kesalahan umum pada server. |
| 501 Not Implemented | Fungsi belum tersedia. |
| 503 Service Unavailable | Server sedang overload atau down. |
Header HTTP
Jenis Header
| Jenis | Contoh |
|---|---|
| General Headers | Connection, Cache-Control |
| Request Headers | Host, User-Agent, Accept |
| Response Headers | Server, Content-Type, Set-Cookie |
| Entity Headers | Content-Length, Content-Type |
💡 Contoh Header Umum:
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Content-Type: application/json
Cache-Control: no-cacheHTTP vs HTTPS
| Aspek | HTTP | HTTPS |
|---|---|---|
| Port Default | 80 | 443 |
| Enkripsi | ❌ Tidak ada enkripsi | ✅ Menggunakan SSL/TLS |
| Keamanan | Rendah | Tinggi |
| SEO Friendly | ❌ Kurang disukai mesin pencari | ✅ Sangat disukai |
🔒 HTTPS = HTTP + SSL/TLS
Studi Kasus: Permintaan dan Respons HTTP
Contoh Permintaan
GET /index.php?name=JohnDoe HTTP/1.1
Host: www.example.com
User-Agent: Chrome/123
Accept: text/htmlContoh Respons
HTTP/1.1 200 OK
Date: Thu, 01 Jan 2025 12:00:00 GMT
Server: Apache
Content-Type: text/html
Content-Length: 1357
<!DOCTYPE html>
<html>
<head><title>Hello</title></head>
<body><h1>Welcome, John Doe!</h1></body>
</html>Perkembangan HTTP
| Versi | Tahun | Fitur Baru |
|---|---|---|
| HTTP/1.1 | 1997 | Persistent connection, pipelining |
| HTTP/2 | 2015 | Multiplexing, header compression, server push |
| HTTP/3 | 2022 | Menggunakan protokol UDP (QUIC), mengurangi latensi, TLS wajib |
HTTP/2 vs HTTP/3
| Aspek | HTTP/2 | HTTP/3 |
|---|---|---|
| Protokol Transport | TCP | UDP (QUIC) |
| Multiplexing | Ya | Ya |
| Head-of-Line Blocking | Masih bisa terjadi | Diselesaikan |
| Enkripsi | Opsional (tetapi direkomendasikan) | Wajib menggunakan TLS 1.3 |
| Latensi | Lebih rendah dari HTTP/1.1 | Paling rendah karena QUIC |
Komponen Penting dalam HTTP
1. URL (Uniform Resource Locator)
URL adalah alamat lengkap suatu sumber daya di internet.
Contoh: https://www.example.com/path?query=param#fragment
2. URI (Uniform Resource Identifier)
URI adalah identitas unik untuk menunjuk sumber daya.
Contoh: /path/to/resource
3. Endpoint
Sebuah titik akhir dalam API tempat permintaan dikirim.
Contoh: /api/v1/users
Studi Kasus: Muatan Halaman Web
Alur Permintaan dan Respons
- Browser mengirim GET ke
https://uin-suka.ac.id/index.php - Server merespons dengan kode 200 OK dan halaman HTML
- Browser kemudian meminta file CSS dan JS tambahan
- Jika ada gambar, browser mengirimkan GET untuk setiap file
📊 Tips Belajar: Gunakan Developer Tools (F12) untuk melihat semua request dan response saat membuka halaman web.
Kesimpulan
HTTP adalah dasar dari komunikasi web modern. Dengan pemahaman tentang:
🔹 Metode HTTP
🔹 Status Code
🔹 Header dan Body
🔹 Perbedaan HTTP/1.1, HTTP/2, dan HTTP/3
🔹 Permintaan dan Respons
kamu akan lebih mudah memahami bagaimana halaman web bekerja, membuat API, atau menganalisis masalah jaringan dan performa situs web.