February 03, 2016

Protokol HTTP

Jaringan Internet dan perangkat disekitarnya dibangun untuk saling berkomunikasi melalui protokol HTTP (HyperText Transfer Protocol). HTTP merupakan bahasa umum yang menghubungkan server dengan perangkat-perangkat lain yang ingin mengakses sumber daya di dalam server tersebut.

Pada bagian ini kita akan melihat secara garis besar tentang HTTP. Kita akan melihat bagaimana aplikasi atau situs web berkomunikasi melalui HTTP, beserta cara kerja dari HTTP itu sendiri. Secara spesifik, pembahasan mencakup:
  • Bagaimana server dan klien berkomunikasi
  • Dari mana konten web berasal
  • Format pesan yang digunakan pada komunikasi HTTP
  • Komponen-komponen yang membangun HTTP
Setelah mempelajari intrik-intrik umum tentang HTTP, kita akan mencoba untuk membangun sebuah web server sederhana dengan menggunakan NodeJS agar kita dapat mengerti cara kerja web server secara lebih mendalam lagi.
Ada sangat banyak hal yang akan perlu kita pelajari pada bagian ini. Langsung saja, mari kita mulai pembahasannya.

HTTP: Penghubung Dunia Maya

Terdapat milyaran data dalam berbagai bentuk, dari gambar sampai dengan teks, dikirimkan melalui Internet setiap harinya. HTTP sebagai protokol penghubung utama memindahkan berbagai data ini dengan cepat, mudah, dan stabil dari server ke perangkat pengguna seperti browser.
HTTP dibangun di atas TCP, yang menyebabkan HTTP menjamin data yang dikirimkan dari satu perangkat ke perangkat lainnya tidak akan rusak atau terpecah belah. Bagi pengguna, hal ini sangat baik karena integritas data yang dikirimkan terjamin dengan baik. Untuk pengembang aplikasi, hal ini juga sangat baik karena pengembang dapat berfokus ke apakah data yang dikirimkan berguna atau tidak daripada bagaimana mengirimkan data tersebut.
HTTP merupakan sebuah protokol komunikasi yang terbuka dan netral. Hal ini berarti HTTP dapat dibaca oleh perangkat apapun yang telah dikembangkan untuk mengerti protokol HTTP. Pada awal perkembangan Internet, kita biasanya menggunakan HTTP pada sebuah browser, untuk mengakses halaman web. Pada perkembangan selanjutnya, akses HTTP dari perangkat bergerak seperti smartphone melalui aplikasi sudah menjadi hal yang biasa.
Sebagai sebuah protokol komunikasi, HTTP dapat mengirimkan berbagai jenis data. Misalnya, pada sebuah halaman web kita akan mengirimkan data HTML melalui HTTP. Data HTML ini kemudian akan dibaca dan ditampilkan oleh sebuah browser. Pada sisi lain, HTTP juga mungkin saja hanya mengirimkan data untuk diproses lebih lanjut oleh aplikasi lain. Jadi, tidak terdapat batasan terhadap apa yang dapat dikirimkan oleh HTTP maupun siapa yang mengirimkan / menerima data dari HTTP.
Selanjutnya, mari kita lihat lebih dekat cara HTTP mengirimkan data dalam web.

Klien dan Server Web

Sebuah server web merupakan server yang berkomunikasi menggunakan protokol HTTP. Server web menyimpan data-data yang digunakan oleh sebuah web, dan menyajikan data-data tersebut ketika diminta oleh pengguna web. Klien (pengguna) web mengirimkan HTTP Request kepada server, dan server mengembalikan HTTP Response berisi data yang diminta. Klien dan server HTTP ini merupakan komponen dasar dari World Wide Web (WWW).
Klien dan Server Web
Klien dan Server Web
Seperti yang telah dijelaskan sebelumnya, klien web merupakan perangkat yang dapat berkomunikasi dengan protokol HTTP. Klien web yang paling umum adalah browser seperti Chrome atau Firefox. Ketika mengirimkan permintaan dan menerima HTTP Response, klien akan membaca data respon (sesuai dengan tipe yang diberikan server) dan menampilkannya ke pengguna.

  1. HTTP Resource

Server web sendiri bertugas memberikan HTTP Response dengan isi data yang benar. Isi data dapat berupa sebuah file yang disimpan dalam server, ataupun dihasilkan secara dinamis oleh aplikasi tertentu. Isi data yang dikembalikan oleh web server kita kenal dengan nama HTTP Resource. HTTP Resource dapat berupa apa saja, dari file teks, HTML, Microsoft Word, JPEG, musik mp3, dan seterusnya.
Pada skala kecil atau untuk data-data statik seperti gambar, seringkali server hanya menyimpan dan menyajikan file saja. Tetapi untuk skala besar, misalnya Facebook, menyimpan 500 juta halaman untuk setiap pengguna tentunya sangat tidak praktis. Pada tingkat ini, biasanya data HTML dihasilkan secara dinamis, menggunakan program spesifik (dalam kasus Facebook misalnya, data HTML dihasilkan secara dinamis melalui data pengguna dalam basis data, dengan bahasa pemrograman PHP)
 2. Media Type

Karena terdapat sangat banyak jenis data yang ada di Internet, HTTP memberikan tanda terhadap setiap file yang dikirimkan melalui HTTP. Penanda format file ini dibuat agar klien dapat dengan mudah memahami data apa yang diterima, dan mengetahui apa yang harus dilakukan dengan data tersebut (gambar ditampilkan, video dimainkan, dst). Format penanda data HTTP kita kenal dengan nama MIME type.
MIME (Multipurpose Internet Mail Extension) pada awalnya dikembangkan sebagai solusi masalah pengiriman pesan pada sistem email. MIME bekerja dengan sangat efektif sehingga ia juga diadopsi oleh HTTP sebagai format untuk menjelaskan data multimedia pada HTTP.
Sebuah MIME Type merupakan label dalam bentuk teks, yang merepresentasikan jenis objek utama serta jenis pendukung dari file tersebut, dipisahkan oleh garis miring. Misalnya:
  • Sebuah dokumen teks berformat HTML ditandai sebagai text/html.
  • Sebuah dokumen teks ASCII standar ditandai sebagai text/plain.
  • Sebuah gambar beformat JPEG ditandai sebagai image/jpeg.
  • Sebuah gambar dengan format GIF ditandai sebagai image/gif.
  • Sebuah video dengan format mp4 ditandai sebagai video/mp4
  • Sebuah presentasi yang dibuat dengan PowerPoint bertanda application/vnd.openxmlformats-officedocument.presentationml.presentation.
MIME Type dari setiap jenis format dan jenis pendukung diolah oleh IANA (Internet Assigned Numbers Authority) untuk memastikan setiap perangkat klien maupun server memiliki informasi yang sama mengenai hal ini.
Setiap pengembang aplikasi dengan format baru dapat meminta MIME Type dari file mereka dibuat oleh IANA. Karena hal ini, terdapat sangat banyak sekali MIME Type seperti yang nampak pada contoh di atas, dan tidak mungkin kita tuliskan semuanya. Halaman MIME Type pada Wikipedia memberikan daftar MIME Type yang cukup lengkap.

URI, URL, dan URN

Seluruh data yang ada pada sebuah web server memiliki nama agar klien yang ingin mengakses dapat merujuk ke data yang diinginkannya. Data yang ada pada server dikenal dengan nama URI (Uniform Resource Identifier). URI dapat dikatakan sebagai alamat post dari Internet, mengidentifikasikan seluruh sumber data yang ada di Internet dengan unik.
Berikut adalah contoh dari sebuah URI:
http://contoh.com/gambar/dinosaurus.png
URI di atas menunjukkan informasi lengkap di mana data yang ingin diakses disimpan. Informasi yang diberikan yaitu:
  1. Protokol pengaksesan, pada bagian http://
  2. Alamat Internet, pada bagian contoh.com
  3. Letak file yang ingin diakses pada web server, pada bagian /gambar/dinosaurus.png
Contoh di atas merupakan salah satu dari dua cara representasi data oleh URI. URI memiliki dua cara representasi data, yaitu dengan URL dan URN.

URL

URL (Uniform Resource Locator) merupakan representasi URI yang paling sering digunakan. URL mendeskripsikan lokasi spesifik dari sebuah data di dalam server tertentu. URL bukan hanya mendeskripsikan lokasi, tetapi juga cara mengakses data yang kita inginkan.
Contoh URI yang kita lihat sebelumnya:
http://contoh.com/gambar/dinosaurus.png
merupakan contoh dari URL. Tiga bagian dari URL yang telah kita bahas sebelumnya (protokol, alamat, lokasi file) dapat digantikan sesuai dengan cara penyimpanan pada server. Misalnya:
ftp://bert@ftp.contoh.com/dokumen/laporan/2014-finansial.xslx
Pada contoh URL di atas, kita mengambil dokumen melalui protokol FTP (File Transfer Protocol) pada alamat ftp.contoh.com yang diakses dengan pengguna bert. File disimpan pada lokasi /dokumen/laporan/2014-finansial.xslx. Dengan informasi yang diberikan oleh URL ini, kita dapat mengambil data laporan finansial yang dibutuhkan dari manapun.
Pada dunia web di masa penulisan (awal 2015), hampir semua URI yang ada merupakan URL.

URN

URN (Uniform Resource Name) merupakan penanda berbentuk nama unik dari sebuah data atau konten tertentu, terlepas dari di mana sebenarnya data tersebut berada. Sifat yang tidak terikat dengan lokasi dari URN ini memungkinkan data sebenarnya berpindah-pindah secara bebas (misal jika terjadi perubahan server atau kepemilikan). URN juga memungkinkan kita untuk mengakses data dari beberapa protokol berbeda dengan nama yang sama. Misalnya, mungkin saja kita mengakses melalui FTP di desktop, dan melalui HTTP di tablet dengan URN yang sama.
Berikut adalah contoh dari sebuah URN:
urn:isbn:0201896834
Seperti yang dapat dilihat dari contoh di atas, URN terdiri dari tiga bagian:
  1. Bagian pertama, urn: merupakan penanda protokol yang digunakan, sama seperti http:// pada URL.
  2. Bagian kedua yang dikenal dengan nama NID merupakan pengidentifikasi namespace. NID menentukan arti dari bagian selanjutnya. Bagian ini memberikan identifikasi objek apa yang sedang diakses. Pada contoh isbn, kita dapat langsung mengetahui kalau sumber daya yang ingin diakses adalah buku. Untuk perangkat lunak misalnya, kita mungkin saja menemukan uuid di sini.
  3. Bagian ketiga yang disebut dengan NSS merupakan nilai yang bersifat unik terhadap sumber daya yang diakses, sesuai dengan NID yang ada. Format penulisan dari NSS bergantung kepada NID. Cara penuliasn ISBN tentunya berbeda dengan UUID atau format lainnya.
Jadi, berdasarkan contoh URN di atas, kita mengetahui bahwa data yang ingin diakses adalah sebuah buku dengan ISBN 0201896834. Jika anda mencari kode tersebut, anda akan mendapatkan buku “The Art of Computer Programming” karangan Donald E. Knuth. Pada implementasi ideal, kita dapat mengisikan URN dan akan mendapatkan buku tersebut tanpa perlu tahu persis di mana lokasi buku tersebut berada. Hal ini tentunya jauh lebih memudahkan kita dibandingakn URL yang mewajibkan kita untuk mengetahui letak persis dari data yang ingin diakses.
Meskipun terlihat lebih mudah dan menyenangkan, sayangnya URN memerlukan perubahan infrastruktur yang besar dibandingkan dengan infrastruktur Internet yang kita gunakan sekarang. Hal ini mengakibatkan tidak adanya implementasi URN yang dapat kita gunakan seakrang, walaupun standar URN sendiri telah diajukan sejak tahun 90-an.
Karena tidak adanya implementasi dan adopsi luas dari URN, kita tidak akan membahas URN lebih lanjut pada tulisan ini. Bagian-bagian selanjutnya dari tulisan akan eksklusif membahas tentang URI (dan URL). Istilah URI dan URL juga akan kita anggap sama, karena pada prakteknya hampir tidak ada perbedaan antara URL dan URI (walaupun secara konsep mendasar kedua hal ini dianggap sama).

Transaksi HTTP

Kita telah mengetahui bagaimana klien dan server berkomunikasi secara garis besar. Kita juga telah melihat bagaimana data yang dikomunikasikan disimpan dan diakses pada server. Sekarang mari kita lihat bagaimana klien menafaatkan HTTP untuk berhubungan dengan web server dalam mengamil data atau sumber daya yang ada. Kita menyebut pemanfaatan HTTP untuk pertukaran informasi ini “Transaksi HTTP”.
Sebuah transaksi HTTP terdiri dari dua bagian:
  1. sebuah perintah request (permintaan) yang dikirimkan dari klien ke server, dan
  2. sebuah perintah response (tanggapan) yang dikirimkan dari server ke client.
Baik response maupun request dikirimkan menggunakan blok data dengan format spesifik yang kita kenal dengan sebutan HTTP Message. Gambar di bawah menunjukkan transaksi HTTP secara garis besar.
Transaksi HTTP
Transaksi HTTP
Pesan-pesan yang dikirimkan HTTP bergerak dalam satu arah. Pesan HTTP mengalir dari hulu ke hilir, terlepas dari apakah pesan tersebut merupakan request atau response. Pengirim pesan, baik server (pada kasus response) maupun client (pada kasus request) merupakan hulu, dan penerima pesan adalah hilir.
Arah transaksi HTTP berbeda dengan alur pesan. Ketika transaksi bergerak dari client ke server, transaksi memiliki arah inbound. Ketika server selesai bekerja dan menjalankan transaksi ke client, transaksi disebut memiliki arah outbound. Untuk mempermudah pengertian akan keempat istilah ini, perhatikan gambar berikut:
Alur Transaksi dan Pesan HTTP
Alur Transaksi dan Pesan HTTP
Semua server yang terlibat dalam perjalanan hulu ke hilir dari sebuah pesan HTTP akan menjadi hulu untuk bagian berikutnya. Pada gambar di atas, Proxy 1 merupakan hulu dari Proxy 2 di dalam alur request. Tetapi sebaliiknya, did alam alur response Proxy 2 menjadi hulu dari Proxy 1.

Bentuk Pesan HTTP

Sebuah pesan HTTP merupakan sebuah data sederhana, yang dibentuk dalam format tertentu. Setiap pesan selalu berisi requestataupun response, yang dibagi ke dalam 3 bagian:
  1. Bagian Start Line yang berisi deskripsi pesan
  2. Bagian Header yang berisi daftar atribut dari pesan
  3. Bagian Body yang berisi data
Bagian Start Line dan Header merupakan data teks ASCII standar, yang dipisahkan oleh baris baru. Pemisah baris yang digunakan oleh HTTP dibangun dari dua karakter, yaitu Carriage Return (CR, ASCII 13) dan Line Feed (LF, ASCII 10). Kedua karakter ini jika digabungkan akan menghasilkan baris baru, dan dikenal dengan nama CRLF pada notasi umum. Begitupun, sebuah aplikasi browser yang baik akan menerima CRLF maupun LF saja. Ketika mengembangkan aplikasi HTTP, disarankan untuk selalu membuat baris baru dengan CRLF untuk memastikan pesan HTTP berhasil diterima dengan benar.
Bagian Body dari HTTP berisi data yang ingin dikirimkan. Data yang dikirimkan dapat berisi apapun, misalnya HTML (paling umum), gambar, atau data biner apapun. Bagian body juga boleh tidak berisi (kosong).
Gambar berikut memberikan contoh bentuk pesan HTTP:
Contoh Format Pesan HTTP
Contoh Format Pesan HTTP
Seperti yang dapat dilihat, kita dapat memiliki banyak atribut pesan (bagian header) dalam HTTP. Terdapat banyak atribut yang dapat diberikan, baik atribut standar maupun non-standar. Pembahasan detil akan dilakukan pada bagian berikutnya. Pada pesan di atas, “content-type” berisi informasi tipe data pada bagian Body dengan format MIME (dalam kasus ini, data teks). Atribut “content-length” sendiri berisi informasi ukuran dari bagian Body yang dikirimkan, yaitu 24 byte.

1. Sintaks Pesan HTTP

Hanya ada 2 jenis pesan HTTP: request dan response. Seperti yang telah dijelaskan sebelumnya, request berisi permintaan data, danresponse berisi jawaban dari request, dalam bentuk apapun.
Apa arti dari setiap kata yang ada di dalam kurung siku? Mari kita lihat satu per satu:
method
Merupakan aksi yang ingin client minta dijalankan oleh server. Sebuah method selalu terdiri dari satu kata seperti “GET”, “POST”, dll. Detail mengenai method akan kita bahas pada bagian berikutnya.
request-URL
Lokasi dari data yang diminta oleh client. Lokasi dapat dimintai dalam format URL lengkap ataupun hanya bagian path saja. Jikarequest dikirimkan langsung kepada server yang akan memberikan respon tanpa perantara, biasanya bagian path saja sudah cukup, karena server dapat mengasumsikan protokol dan host dari URL adalah sama dengan yang dimiliki oleh server.
version
Versi HTTP yang digunakan oleh pengirim pesan.
di mana major maupun minor berisi sebuah bilangan bulat penanda versi.
status-code
Sebuah bilangan tiga digit yang mendeskripsikan apa yang terjadi selama request diproses. Detail mengenai status code akan kita bahas pada bagian berikutnya.
reason-phrase
Teks yang mendeskripsikan status-code dalam bahasa manusia. Biasanya hanya berisi deskripsi singkat, karena reason-phraseakan dianggap selesai jika baris baru ditemukan. Hal ini berarti reason-phrase hanya dapat terdiri dari satu baris kalimat.
headers
Nol atau lebih header.
Masing-masing header akan memiliki nama dan isi yang unik, dipisahkan oleh CRLF. Jika seluruh header telah diberikan, akan terdapat sebuah baris kosong untuk memisahkan antara header dengan body.
entity-body
Isi dari pesan yang dikirimkan. Dapat berisi data biner apapun. Jika pesan tidak memiliki isi, maka bagian ini hanya akan berisi sebuah CRLF.
Sebuah catatan penting lainnya adalah bahwa header HTTP selalu diakhiri oleh sebuah baris baru (baris yang hanya berisi CRLF), bahkan ketika pesan tidak memiliki header dan body. Hal ini berarti ketika sebuah pesan tidak memiliki header dan body, bagian dari penutup pesan akan memiliki dua buah CRLF. Terdapat sangat banyak kliend an server HTTP yang melakukan kesalahan dengan hanya mengirimkan satu CRLF saja pada akhir pesan yang tidak memiliki header dan body. Jika anda mengembangakn server maupunclient HTTP, pastikan perangkat lunak anda dapat menangani kesalahan ini.

2. Start Line

Semua pesan HTTP diawali dengan satu baris pertama Start Line. Start Line memiliki arti yang berbeda, tergantung jenis pesan. Pada pesan request, Start Line mendeskripsikan apa yang harus dilakukan server. Pada pesan response Start Line mendeskripsikan apa yang terjadi setelah server melakukan pesan request.
Mari kita lihat bagaimana perbedaan isi dan bentuk dari kedua jenis Start Line tersebut.

Start Line pada Request

Berikut adalah sebuah contoh Start Line pada sebuah pesan HTTP request:
GET /test/hello.txt HTTP/1.1
Bagian pertama, yaitu GET yang kita kategorikan sebagai method mendeskripsikan operasi apa yang harus dilakukan oleh server. Dalam kasus ini, operasi yang dilakukan yaitu pengambilan data dari server. Terdapat total tujuh buah jenis perintah yang dispesifikasikan oleh standar HTTP, di mana beberapa pesan mewajibkan kita untuk mengisikan bagian Body dan beberapa pesan tidak.
Tabel berikut menunjukkan ketujuh perintah pesan yang ada pada HTTP standar:
MethodDeskripsiBody wajib?
GETAmbil dokumen dari serverTidak
HEADAmbil header dokumen dari serverTidak
POSTKirimkan data ke server untuk diprosesYa
PUTSimpan data yang ada di bagian Body ke serverYa
TRACEIkuti jejak pesan dari proxy server sampai ke serverTidak
OPTIONSTemukan method apa saja yang dapat dijalankan oleh serverTidak
DELETEHapus data dari serverTidak
Ingat bahwa tidak semua server mengimplementasikan ketujuh fungsi standar HTTP ini. Tambahan lagi, karena HTTP dirancang untuk mudah dikembangkan, terdapat banyak server yang mengimplementasikan fungsi-fungsi tamabahan di luar ketujuh fungsi ini. Fungsi tambahan seperti ini dinamakan “extension method”.
Bagian kedua dari Start Line pada contoh pesan request yang diberikan yaitu /test/hello.txt. Bagian ini menunjukkan lokasi dari data atau sumber daya mana yang akan diproses oleh server dengan perintah yang diberikan oleh method. Pada contoh kita, server akan mengambil dokumen yang disimpan pada /test/hello.txt di server. Jika pesan berbentuk:
DELETE /test/hello.txt HTTP/1.1
maka server akan menghapus file /test/hello.txt.
Bagian ketiga, yaitu HTTP/1.1 menunjukkan versi protokol yang digunakan oleh pengirim pesan. Format penulisan versi ini selaluHTTP/x.y pada protokol HTTP. Versi protokol penting untuk memastikan semua pihak yang terlibat (client dan server) dapat memahami pesan yang dikirimkan dan diterima. Sebuah server yang hanya mengerti protokol versi 1.0 tentunya tidak akan dapat mengerti pesan yang dikirimkan oleh klien dalam format protokol 2.0.
Nomor versi yang dikirimkan menunjukkan versi protokol tertinggi yang didukung oleh aplikasi. Hal ini berarti sebuah pesan dengan versi HTTP/1.1 hanya mengindikasikan bahwa pengirim pesan mengerti protokol HTTP/1.1, bukan bahwa pesan menggunakan format atau fitur HTTP/1.1.
Perlu diketahui juga bahwa nomor versi pada protokol HTTP bukan bilangan desimal. Semua bilangan pada versi (contoh: “1” dan “0” pada HTTP/1.0) dianggap nilai yang berbeda. Hal ini berarti HTTP/1.22 memiliki versi yang lebih tinggi dari HTTP/1.3.
Meskipun penggunaan method HTTP terlihat sederhana secara sekilas, pada prakteknya terdapat banyak intrik dan detil dalam penggunaan method. Penjelasan mengenai method secara mendalam dapat dibaca pada bagian Lampiran A.

Start Line pada Response

Pesan response berisi informasi status dan data hasil operasi yang dikirimkan balik kepada client. Berikut adalah contoh dari sebuah Start Line pada pesan response:
HTTP/1.0 200 OK
Bagian pertama dari response adalah versi protokol. Format dan arti versi protokol sama dengan yang ditemukan pada pesan request.
Bagian berikutnya dari response, yaitu 200 OK berisi kode status dari informasi yang diminta oleh pesan request. Jika methodmemberikan informasi apa yang harus dilakukan, maka bagian ini memberikan informasi apa yang terjadi setelah operasi dilakukan. Kode status terdiri dari dua bagian:
  1. Bagian pertama berupa kode angka (status-code200 pada contoh). Dibuat agar kode status mudah diproses oleh komputer.
  2. Bagian kedua berupa teks penjelasan (reason-phraseOK pada contoh). Dibuat agar mudah dimengerti oleh manusia (pengguna sistem).
Kode status dibagi ke dalam beberapa kateogri, yang dapat dilihat pada tabel berikut:
Keseluruhan KodeKode yang TerdefinisiKategori
100 - 199100 - 101Informasional
200 - 299200 - 206Sukses
300 - 399300 - 305Redirection
400 - 499400 - 415Kesalahan Client
500 - 599500 - 505Kesalahan Server
Bagian keseluruhan kode pada tabel di atas mengindikasikan keseluruhan kode status yang mungkin ada untuk satu kategori. Misalnya, kode status dalam cakupan 400-499 akan selalu berisi kode tentang kesalahan server. Begitupun, spesifikasi HTTP baru mendefinisakn sebagian arti kode saja (hanya 400-415). Jika aplikasi menemukan kode status 450 misalnya, kemungkinan server HTTP menggunakan penambahan (extension) dari protokol HTTP.
Berikut adalah beberapa contoh kode status yang sering ditemui pada aplikasi web:
status-codereason-phraseArti
200OKOperasi berhasil! Data ada di Body
401UnauthorizedTidak diizinkan mengakses URL. Mungkin perlu username dan password
404Not FoundURL tidak ditemukan pada server.
Spesifikasi HTTP tidak menentukan secara jelas isi dari reason-phrase. Begitupun, karena makna dari status-code sangat jelas danreason-phrase mewakili hanya satu status-code, umumnya kita akan menemukan reason-phrase yang sama untuk setiapstatus-code pada kebanyakan server.
Jumlah kode status sendiri sangat banyak, dan tidak akan diberikan deskripsi detailnya pada bagian ini. Deskripsi detil dari masing-masing kode status dapat dilihat pada Lampiran B.

Entity Body

Bagian ketiga dan terakhir dari sebuah pesan HTTP adalah entity body. Seperti namanya, entity body merupakan isi pesan yang ingin dikirimkan, baik oleh client maupun server. HTTP dirancang untuk mengirimkan entity body dari satu titik ke titik lainnya. Entity bodybersifat opsional, boleh ada dan boleh tidak ada.
Pesan HTTP dapat berisi banyak jenis data: gambar, video, dokumen HTML, aplikasi, surat elektronik, dan sebagainya. Semua data yang dikirimkan ini berada di dalam entity body.



Sources: http://bertzzie.com/knowledge/serverside-nodejs/ProtokolHTTP.html