Skip to content

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

VersiTahun RilisFitur Utama
HTTP 0.91991Hanya mendukung metode GET, tanpa header atau status code.
HTTP 1.01996Menambahkan header, metode POST dan HEAD, serta dukungan tipe media.
HTTP 1.11997Persistent connection, host header, chunked transfer encoding.
HTTP/22015Multiplexing, kompresi header, server push.
HTTP/32022Menggunakan protokol QUIC (UDP), lebih cepat dan aman.

Cara Kerja HTTP

Model Request-Response

  1. Klien (Browser) mengirim permintaan (request) ke server.
  2. Server menerima permintaan, memprosesnya, lalu mengirim respons.
  3. Respons berisi data yang diminta atau pesan kesalahan jika permintaan gagal.

Struktur Pesan

Request Message

http
<Method> <Path> HTTP/<Version>
<Header-Field>: <Value>
...
<Header-Field>: <Value>

[Body (opsional)]

Response Message

http
HTTP/<Version> <Status-Code> <Reason-Phrase>
<Header-Field>: <Value>
...
<Header-Field>: <Value>

[Body]

Metode HTTP (HTTP Methods)

MethodFungsiIdempotenAman
GETMengambil data dari server
POSTMengirim data baru ke server
PUTMemperbarui seluruh data sumber daya
DELETEMenghapus sumber daya
HEADSama seperti GET, tapi hanya mengambil header
OPTIONSMendapatkan opsi komunikasi dari server
PATCHMemperbarui sebagian dari sumber daya

Perbedaan Dasar antara GET dan POST

AspekGETPOST
Data KirimMelalui URL (query string)Di dalam body request
KeamananTidak aman untuk data sensitifLebih aman daripada GET
CachingDapat dicacheTidak dapat dicache
BookmarkBisaTidak bisa
Panjang DataTerbatas (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

KodeArti
100 ContinueServer siap menerima sisa permintaan.
101 Switching ProtocolsKlien meminta perubahan protokol, server setuju.

Kelompok 2xx – Sukses

KodeArti
200 OKPermintaan berhasil.
201 CreatedSumber daya baru berhasil dibuat.
204 No ContentPermintaan berhasil tetapi tidak ada konten untuk dikembalikan.

Kelompok 3xx – Redireksi

KodeArti
301 Moved PermanentlySumber daya telah dipindahkan secara permanen.
302 FoundSumber daya sementara dipindahkan.
304 Not ModifiedDigunakan untuk caching; sumber daya tidak berubah.

Kelompok 4xx – Kesalahan Klien

KodeArti
400 Bad RequestFormat permintaan salah.
401 UnauthorizedAutentikasi diperlukan.
403 ForbiddenAkses ditolak.
404 Not FoundSumber daya tidak ditemukan.
405 Method Not AllowedMetode HTTP tidak diizinkan.

Kelompok 5xx – Kesalahan Server

KodeArti
500 Internal Server ErrorKesalahan umum pada server.
501 Not ImplementedFungsi belum tersedia.
503 Service UnavailableServer sedang overload atau down.

Header HTTP

Jenis Header

JenisContoh
General HeadersConnection, Cache-Control
Request HeadersHost, User-Agent, Accept
Response HeadersServer, Content-Type, Set-Cookie
Entity HeadersContent-Length, Content-Type

💡 Contoh Header Umum:

http
Host: www.example.com  
User-Agent: Mozilla/5.0  
Accept: text/html,application/xhtml+xml  
Content-Type: application/json  
Cache-Control: no-cache

HTTP vs HTTPS

AspekHTTPHTTPS
Port Default80443
Enkripsi❌ Tidak ada enkripsi✅ Menggunakan SSL/TLS
KeamananRendahTinggi
SEO Friendly❌ Kurang disukai mesin pencari✅ Sangat disukai

🔒 HTTPS = HTTP + SSL/TLS


Studi Kasus: Permintaan dan Respons HTTP

Contoh Permintaan

http
GET /index.php?name=JohnDoe HTTP/1.1
Host: www.example.com
User-Agent: Chrome/123
Accept: text/html

Contoh Respons

http
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

VersiTahunFitur Baru
HTTP/1.11997Persistent connection, pipelining
HTTP/22015Multiplexing, header compression, server push
HTTP/32022Menggunakan protokol UDP (QUIC), mengurangi latensi, TLS wajib

HTTP/2 vs HTTP/3

AspekHTTP/2HTTP/3
Protokol TransportTCPUDP (QUIC)
MultiplexingYaYa
Head-of-Line BlockingMasih bisa terjadiDiselesaikan
EnkripsiOpsional (tetapi direkomendasikan)Wajib menggunakan TLS 1.3
LatensiLebih rendah dari HTTP/1.1Paling 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

  1. Browser mengirim GET ke https://uin-suka.ac.id/index.php
  2. Server merespons dengan kode 200 OK dan halaman HTML
  3. Browser kemudian meminta file CSS dan JS tambahan
  4. 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.