Berkenalan dengan HTTP dan Penggunaannya
Kalau kalian sering bermain internet, pasti sering melihat tulisan HTTP. Tulisan ini muncul di browser kamu dan berbagai media sosial. Jika kamu ingin menjadi seorang web developer, kamu pasti akan bergelut dengan HTTP setiap saat. Jadi, kamu harus tau nih seluk beluk dan detil mengenai HTTP sebelum kamu memulai perjalananmu menjadi web developer.
Lalu, apa sih artinya HTTP ini dan apa sebenarnya HTTP?
Mari berkenalan dengan HTTP.
Sejarah Singkat
Pengembangan HTTP pertama kali dilakukan oleh Tim Berners-Lee di CERN pada tahun 1989. Saat ini, pengembangan masih terus dilakukan dan telah diserahkan kepada kelompok bernama Internet Engineering Task Force (IETF).
Tim Berners-Lee dikenal sebagai bapak pencipat World Wide Web (WWW) karena dia yang pertama kali mengembangkan HTTP, HTML, dan teknologi yang berhubungan erat dengan web-server serta browser berbasis teks. World Wide Web inilah yang menjadi pondasi bagi internet saat ini.
Apa itu HTTP?
Hypertext Transfer Protocol (HTTP) adalah suatu standar yang diciptakan untuk internet sehingga client (biasanya browser) dan server dapat berkomunikasi dengan baik. Kenapa sih perlu standar? Untuk lebih jelasnya, yuk coba kita gunakan perumpamaan dalam surat-menyurat.
Didalam surat-menyurat atau mengirim paket, ada tulisan yang kamu harus tulis agar paketmu sampai dengan selamat. Nah, tulisan ini lah yang kita katakan sebagai standar. Jika tidak ada standar ini, pengirim paket tentunya akan kebingungan.
Bisa kalian bayangkan kalau setiap orang memiliki cara penulisan alamatnya masing-masing seperti contohnya yang ada di kanan gambar. Kamu akan kesulitan membedakan mana yang nama kecamatan, mana yang nama jalan, dan mana yang nama orang. Belum lagi penulisan kode pos di sebalah nomor handphone yang semakin membuat bingung.
Hal ini juga yang mendasari diciptakannya standar, dalam kasus ini adalah HTTP.
Dengan adanya HTTP, client dan server dapat saling berkomunikasi dengan baik sehingga menciptakan dunia internet seperti sekarang ini.
Format Pesan HTTP
Lalu, bagaimana sebenarnya bentuk pesan HTTP itu sendiri? Beruntungnya, bentuk pesan ini dapat dibaca dengan mudah oleh manusia sehingga kamu dapat mempelajarinya dengan mudah. Terdapat dua jenis pesan HTTP yang digunakan yakni,
-
HTTP Request
Pesan dengan format HTTP Request digunakan oleh client (biasanya browser) untuk meminta jawaban dari server. Contoh permintaan yang paling umum adalah permintaan untuk menampilkan halaman berdasarkan URL atau link yang kita masukkan ke dalam browser.
-
HTTP Response
Pesan dengan format HTTP Response digunakan oleh server untuk membalas permintaan client (biasanya browser). Pesan ini akan berisi jawaban atas permintaan client, jawabannya bermacam-macam dan memiliki nomor kode masing-masing. Contoh jawaban yang paling umum adalah balasan akan permintaan URL akan berisi kode HTML dari URL yang diminta.
Agar lebih jelas, lihat contoh HTTP Request dan Response di bawah ini.
HTTP Request
Format pesan HTTP Request terdiri dari 4 bagian, yakni:
- Baris request
- Baris header
- Baris kosong
- Message Body (opsional)
Contoh paling sederhana untuk sebuah pesan HTTP Request adalah di bawah ini
GET / HTTP/1.1
Host: www.example.com
Mari bahas bagian per bagian pada contoh di atas.
Bagian 1
GET / HTTP/1.1
Bagian 1 ini dipecah lagi menjadi tiga bagian, pertama GET
adalah salah satu dari berbagai jenis request method yang tersedia di HTTP. Selanjutnya, /
yang merupakan request target yakni URL yang dituju. Terakhir adalah HTTP/1.1
yang merupakan nama standard yang digunakan untuk melakukan request.
Request method yang tersedia di HTTP adalah sebagai berikut,
GET
HEAD
POST
PUT
DELETE
TRACE
OPTIONS
CONNECT
PATCH
Masing-masing memiliki kegunaannya tersendiri yang dapat dibaca di dokumen RFC 7231. Kebanyakan request yang lalu lalang di internet adalah GET yang digunakan untuk meminta data dari server dan POST yang digunakan untuk mengirim data ke server.
Bagian 2
Host: www.example.com
Bagian ini berisi satu baris pada contoh diatas. Bagian ini berisi request headers yang biasanya berisi metadata dari sebuah request.
Header yang paling banyak kamu dengar adalah header bernama Cookie. Cookie tersebut diletakkan di baris ini. Contoh header lain adalah Referer yang digunakan untuk mengidentifikasi halaman yang kamu kunjingi sebelumnya. Header Host sendiri diwajibkan ada dan harus berisi nama website atau IP address dari website yang ingin kamu akses. Tentunya, masih banyak header lain baik yang standar maupun tidak.
Berikut contoh penggunaan header tersebut.
Cookie: _ga=GA2.5.9992144407.352216230; cookie-notice-dismissed=true
Host: www.facebook.com
Referer: http://www.google.com/
Bagian 3
Bagian ini adalah baris kosong, tidak diisi apa-apa. Memang diharuskan terdapat sebuah baris kosong setelah request header.
Bagian 4
Bagian terakhir biasanya berisi request body. Baris ini terisi biasanya saat menggunakan request metod bentuk POST. Di contoh ini, tidak ada baris ke 4 karena memang tidak diperlukan.
HTTP Response
Mirip dengan HTTP Request, pesan HTTP Response juga terdiri dari 4 bagian, yakni:
- Baris status
- Baris header
- Baris kosong
- Message Body (opsional)
Perbedaan yang mencolok hanya pada baris pertama yang berganti menjadi baris status. Berikut ini adalah contoh pesan HTTP Response paling sederhana,
HTTP/1.1 200 OK
Date: Wed, 23 Sep 2020 13:05:48 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>
Walaupun cukup panjang, tetapi jika sudah tahu makna setiap bagiannya akan menjadi mudah dipahami, kok. Sekarang, kita kupas bagian per bagian dari struktur pesan HTTP Request di atas.
Bagian 1
HTTP/1.1 200 OK
Bagian ini bernama status line, yang dipecah menjadi tiga bagian:
- Yang pertama, merupakan nama format yang digunakan pada contoh ini adalah
HTTP/1.1
. - Bagian selanjutnya adalah status code dari pesan tersebut, di contoh berisi kode
200
. Kode ini mengindikasikan sukses atau tidaknya pesan yang dikirim. - Bagian terakhir merupakan penjelasan dari status code tersebut, kode
200
memiliki penjelasanOK
yang artinya pesan berhasil diterima dengan baik.
Bagian 2
Date: Wed, 23 Sep 2020 13:05:48 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Bagian ini berisi response header, yang merupakan metadata dari sebuah pesan. Pada contoh di atas, terdapat 5 jenis metadata yakni,
- Date merupakan waktu kapan pesan HTTP Response dibuat
- Content-Type menjelaskan jenis konten yang dikirim, pada kasus ini adalah konten file teks jenis HTML
- Content-Length menunjukkan seberapa banyak karakter yang ada di dalam konten
- Last-Modified adalah waktu terakhir konten tersebut diubah di server
- Server yakni jenis server yang mengirimkan data
Kelima response header di atas adalah yang paling sering ditemui pada saat kamu menggunakan HTTP.
Bagian 3
Sama halnya dengan HTTP Request, bagian ketiga ini adalah baris kosong. Tidak diisi apa-apa. Memang diharuskan terdapat sebuah baris kosong setelah response header.
Bagian 4
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>
Bagian terakhir merupakan konten yang dikirim oleh server kepada client. Bagian ini bernama message body. Seperti yang dapat kamu lihat, konten yang dikirimkan berupa file HTML yang akan ditampilkan pada browser kamu.
Cara Melihat Pesan HTTP Secara Langsung
Nah, setelah mengetahui apa itu HTTP dan seperti apa bentuknya, sekarang kita coba untuk melihat penggunaan HTTP tersebut secara langsung. Ada dua cara yang bisa kamu gunakan untuk melihat langsung HTTP in action. Pertama dengan menggunakan browser kamu, kedua menggunakan terminal di Linux dan Mac.
Melalui Browser
Pertama, buka browser kesukaanmu. Kemudian klik kanan dan pilih ‘Inspect’ / ‘Inspect Element’, atau bisa juga dengan menekan tombol F12 di keyboard kamu. Seharusnya akan muncul window baru di browser kamu yang mirip seperti gambar di bawah ini.
Kemudian, tekan tab bernama ‘Network’. Lalu kembalilah ke browser dan buka sebuah link atau URL apapun, misalkan www.example.com. Kamu akan melihat banyak hal di sana, namun fokus kepada file yang bernama example.com
atau sesuai URL kamu.
Jika kamu klik file tersebut, akan keluar HTTP Request yang dikirim oleh browser serta HTTP Response yang diterima oleh browser, seperti di bawah ini.
Jika kamu menekan tombol view source
atau raw
kamu bisa melihat HTTP Request dan Response yang sama persis mengikuti aturan yang sudah dijelaskan sebelumnya.
Melalui Terminal
Kamu bisa melakukan pengiriman HTTP Request secara manual tanpa melalui browser menggunakan perintah nc
atau netcat.
Di Ubuntu, kamu bisa menginstal netcat dengan perintah
$ apt install netcat
Di MacOS, menggunakan Homebrew kamu dapat menginstal netcat menggunakan perintah
$ brew install netcat
Setelah itu, lakukan perintah ini untuk menghubungkan terminal kamu dengan suatu server, contohnya example.com,
$ nc example.com 80
Kemudian ketik teks berikut ini ke dalam terminal,
GET / HTTP/1.1
Host: example.com
Tekan enter.
Kamu akan mendapatkan balasan HTTP Response dari server yang kamu tuju.
Penutup
HTTP ada untuk menjembatani komunikasi antara client dan server. Protokol ini merupakan standar cara berkomunikasi di dunia web ini. Mengerti akan bagaimana HTTP bekerja akan sangat penting bagi web developer terutama jika sudah menyentuh pada pembuatan server dan API (Application Programming Interface).
Bagikan di
Kolom Diskusi