HTTP - Panduan Cepat

Hypertext Transfer Protocol (HTTP) adalah protokol tingkat aplikasi untuk sistem informasi hypermedia yang terdistribusi, kolaboratif. Ini adalah dasar untuk komunikasi data untuk World Wide Web (yaitu internet) sejak tahun 1990. HTTP adalah protokol umum dan tanpa negara yang dapat digunakan untuk tujuan lain juga dengan menggunakan ekstensi metode permintaan, kode kesalahan, dan header.

Pada dasarnya, HTTP adalah protokol komunikasi berbasis TCP / IP, yang digunakan untuk mengirimkan data (file HTML, file gambar, hasil kueri, dll.) Di World Wide Web. Port default adalah TCP 80, tetapi port lain dapat digunakan. Ini menyediakan cara standar bagi komputer untuk berkomunikasi satu sama lain. Spesifikasi HTTP menentukan bagaimana data permintaan klien akan dibuat dan dikirim ke layanan, dan bagaimana server menanggapi permintaan ini.

Fitur dasar

Ada tiga fitur dasar berikut yang membuat HTTP menjadi protokol yang sederhana namun kuat:

  • HTTP is connectionless:Klien HTTP yaitu. browser memulai permintaan HTTP dan setelah permintaan dibuat, klien memutuskan koneksi dari server dan menunggu tanggapan. Server memproses permintaan dan membangun kembali koneksi dengan klien untuk mengirim tanggapan kembali.

  • HTTP is media independent:Artinya, semua jenis data dapat dikirim melalui HTTP selama klien dan server mengetahui cara menangani konten data. Ini diperlukan klien dan juga server untuk menentukan tipe konten menggunakan tipe MIME yang sesuai.

  • HTTP is stateless:Seperti disebutkan di atas, HTTP adalah tanpa sambungan dan ini adalah akibat langsung bahwa HTTP adalah protokol tanpa negara. Server dan klien menyadari satu sama lain hanya selama permintaan saat ini. Setelah itu, keduanya melupakan satu sama lain. Karena sifat protokol ini, baik klien maupun browser tidak dapat menyimpan informasi antara permintaan yang berbeda di seluruh halaman web.

HTTP / 1.0 menggunakan koneksi baru untuk setiap pertukaran permintaan / respons dimana koneksi HTTP / 1.1 dapat digunakan untuk satu atau lebih pertukaran permintaan / respons.

Arsitektur Dasar

Diagram berikut menunjukkan arsitektur yang sangat dasar dari aplikasi web dan menggambarkan letak HTTP:

Protokol HTTP adalah protokol permintaan / tanggapan berdasarkan arsitektur berbasis klien / server di mana browser web, robot dan mesin pencari, dll. Bertindak seperti klien HTTP dan server Web bertindak sebagai server.

Klien

Klien HTTP mengirimkan permintaan ke server dalam bentuk metode permintaan, URI, dan versi protokol, diikuti dengan pesan seperti MIME yang berisi pengubah permintaan, informasi klien, dan kemungkinan konten tubuh melalui koneksi TCP / IP.

Server

Server HTTP merespons dengan baris status, termasuk versi protokol pesan dan kode keberhasilan atau kesalahan, diikuti dengan pesan seperti MIME yang berisi informasi server, metainformasi entitas, dan kemungkinan konten badan-entitas.

Bab ini akan mencantumkan beberapa Parameter Protokol HTTP yang penting dan sintaksnya dengan cara yang digunakan dalam komunikasi. Misalnya, format untuk tanggal, format URL, dll. Ini akan membantu Anda dalam menyusun pesan permintaan dan respons Anda saat menulis program klien atau server HTTP. Anda akan melihat penggunaan lengkap parameter ini di bab berikutnya sambil menjelaskan struktur pesan untuk permintaan dan tanggapan HTTP.

Versi HTTP

HTTP menggunakan <major>.<minor>skema penomoran untuk menunjukkan versi protokol. Versi pesan HTTP ditunjukkan dengan bidang Versi HTTP di baris pertama. Berikut adalah sintaks umum untuk menentukan nomor versi HTTP:

HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT

Contoh

HTTP/1.0

or

HTTP/1.1

Uniform Resource Identifier (URI)

Uniform Resource Identifiers (URI) hanya diformat, string case-insensitive yang berisi nama, lokasi dll untuk mengidentifikasi sumber daya, misalnya situs web, layanan web, dll. Sintaks umum URI yang digunakan untuk HTTP adalah sebagai berikut:

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Di sini jika port kosong atau tidak diberikan, port 80 diasumsikan untuk HTTP dan kosong abs_path setara dengan sebuah abs_pathdari "/". Karakter selain yang ada direserved dan unsafe set setara dengan pengkodean ""% "HEX HEX" mereka.

Contoh

Dua URI berikut ini setara:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

Format Tanggal / Waktu

Semua stempel tanggal / waktu HTTP HARUS ditunjukkan dalam Greenwich Mean Time (GMT), tanpa kecuali. Aplikasi HTTP diizinkan untuk menggunakan salah satu dari tiga representasi stempel tanggal / waktu berikut:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Kumpulan Karakter

Anda menggunakan kumpulan karakter untuk menentukan kumpulan karakter yang lebih disukai klien. Beberapa set karakter dapat dicantumkan dengan dipisahkan koma. Jika nilai tidak ditentukan, defaultnya adalah US-ASCII.

Contoh

Berikut ini adalah kumpulan karakter yang valid:

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Pengodean Konten

Nilai ecoding konten menunjukkan bahwa algoritme encoding telah digunakan untuk menyandikan konten sebelum meneruskannya melalui jaringan. Pengodean konten terutama digunakan untuk memungkinkan dokumen dikompresi atau diubah secara berguna tanpa kehilangan identitas.

Semua nilai pengkodean konten peka huruf besar kecil. HTTP / 1.1 menggunakan nilai pengkodean konten di bidang header Terima-Pengodean dan Pengodean Konten yang akan kita lihat di bab-bab berikutnya.

Contoh

Berikut adalah skema encoding yang valid:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Jenis Media

HTTP menggunakan Jenis Media Internet di Content-Type dan Acceptkolom header untuk menyediakan pengetikan data dan jenis negosiasi yang terbuka dan dapat diperluas. Semua nilai jenis Media terdaftar dengan Internet Assigned Number Authority ((IANA). Berikut ini adalah sintaks umum untuk menentukan jenis media:

media-type     = type "/" subtype *( ";" parameter )

Nama atribut tipe, subtipe, dan parameter peka huruf besar kecil.

Contoh

Accept: image/gif

Tag Bahasa

HTTP menggunakan tag bahasa di dalam Accept-Language dan Content-Languagebidang. Tag bahasa terdiri dari 1 atau lebih bagian: Tag bahasa utama dan rangkaian sub tag yang mungkin kosong:

language-tag  = primary-tag *( "-" subtag )

Spasi putih tidak diperbolehkan di dalam tag dan semua tag peka huruf besar kecil.

Contoh

Contoh tag meliputi:

en, en-US, en-cockney, i-cherokee, x-pig-latin

Jika tag utama dua huruf adalah singkatan bahasa ISO-639 dan sub tag awal dua huruf apa pun adalah kode negara ISO-3166.

HTTP didasarkan pada model arsitektur klien-server dan protokol permintaan / respons stateless yang beroperasi dengan bertukar pesan melalui koneksi TCP / IP yang andal.

"Klien" HTTP adalah program (browser web atau klien lain) yang membuat sambungan ke server untuk tujuan mengirim satu atau lebih pesan permintaan HTTP. "Server" HTTP adalah program (umumnya server web seperti Apache Web Server atau Internet Information Services IIS dll.) Yang menerima koneksi untuk melayani permintaan HTTP dengan mengirimkan pesan tanggapan HTTP.

HTTP menggunakan Uniform Resource Identifier (URI) untuk mengidentifikasi sumber daya yang diberikan dan untuk membuat sambungan. Setelah koneksi dibuat,HTTP messagesditeruskan dalam format yang mirip dengan yang digunakan oleh email Internet [RFC5322] dan Multipurpose Internet Mail Extensions (MIME) [RFC2045]. Pesan-pesan ini terdiri darirequests dari klien ke server dan responses dari server ke klien yang akan memiliki format berikut:

HTTP-message   = <Request> | <Response> ; HTTP/1.1 messages

Permintaan HTTP dan tanggapan HTTP menggunakan format pesan umum RFC 822 untuk mentransfer data yang diperlukan. Format pesan umum ini terdiri dari empat item berikut.


     
  • A Start-line
  • Zero or more header fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Bagian berikut akan menjelaskan setiap entitas yang digunakan dalam pesan HTTP.

Pesan Start-Line

Garis-awal akan memiliki sintaks umum berikut:

start-line = Request-Line | Status-Line

Kami akan membahas Request-Line dan Status-Line sambil membahas masing-masing pesan HTTP Request dan HTTP Response. Untuk saat ini mari kita lihat contoh garis awal jika ada permintaan dan tanggapan:

GET /hello.htm HTTP/1.1     (This is Request-Line sent by the client)

HTTP/1.1 200 OK             (This is Status-Line sent by the server)

Field Header

Bidang HTTP yang lebih mati memberikan informasi yang diperlukan tentang permintaan atau respons, atau tentang objek yang dikirim di badan pesan. Ada empat jenis header pesan HTTP:

  • General-header: Bidang tajuk ini memiliki penerapan umum untuk pesan permintaan dan tanggapan.

  • Request-header: Bidang tajuk ini hanya dapat diterapkan untuk pesan permintaan.

  • Response-header: Bidang tajuk ini hanya dapat diterapkan untuk pesan tanggapan.

  • Entity-header: Bidang header ini menentukan metainformation tentang badan-entitas atau, jika tidak ada badan

Semua tajuk yang disebutkan di atas mengikuti format umum yang sama dan masing-masing bidang tajuk terdiri dari nama yang diikuti oleh titik dua (:) dan nilai bidang sebagai berikut:

message-header = field-name ":" [ field-value ]

Berikut adalah contoh berbagai bidang tajuk:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Badan Pesan

Bagian badan pesan adalah opsional untuk pesan HTTP tetapi jika tersedia maka akan digunakan untuk membawa badan-entitas yang terkait dengan permintaan atau respons. Jika badan entitas dikaitkan maka biasanyaContent-Type dan Content-Length baris header menentukan sifat badan yang terkait.

Badan pesan adalah yang membawa data permintaan HTTP aktual (termasuk data formulir dan yang diunggah, dll.) Dan data tanggapan HTTP dari server (termasuk file, gambar, dll). Berikut ini adalah isi sederhana dari badan pesan:

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Klien HTTP mengirimkan permintaan HTTP ke server dalam bentuk pesan permintaan yang menyertakan format berikut:


     
  • A Request-line
  • Zero or more header (General|Request|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Bagian berikut akan menjelaskan setiap entitas yang digunakan dalam pesan HTTP.

Message Request-Line

Request-Line dimulai dengan token metode, diikuti oleh Request-URI dan versi protokol, dan diakhiri dengan CRLF. Elemen dipisahkan oleh spasi karakter SP.

Request-Line   = Method SP Request-URI SP HTTP-Version CRLF

Mari kita bahas masing-masing bagian yang disebutkan di Request-Line.

Metode Permintaan

Permintaan Method menunjukkan metode yang akan dilakukan pada sumber daya yang diidentifikasi oleh yang diberikan Request-URI. Metode case-sensitive dan harus selalu disebut dengan huruf besar. Berikut adalah metode yang didukung di HTTP / 1.1

SN Metode dan Deskripsi
1 GET
Metode GET digunakan untuk mengambil informasi dari server yang diberikan menggunakan URI yang diberikan. Permintaan yang menggunakan GET seharusnya hanya mengambil data dan tidak memiliki efek lain pada data.
2 HEAD
Sama seperti GET, tetapi hanya mentransfer baris status dan bagian header.
3 POST
Permintaan POST digunakan untuk mengirim data ke server, misalnya informasi pelanggan, unggah file dll menggunakan formulir HTML.
4 PUT
Ganti semua representasi saat ini dari sumber daya target dengan konten yang diunggah.
5 DELETE
Hapus semua representasi saat ini dari sumber daya target yang diberikan oleh URI.
6 CONNECT
Buat terowongan ke server yang diidentifikasi oleh URI tertentu.
7 OPTIONS
Jelaskan opsi komunikasi untuk sumber daya target.
8 TRACE
Lakukan pengujian loop-kembali pesan di sepanjang jalur ke sumber daya target.

Request-URI

Request-URI adalah Uniform Resource Identifier dan mengidentifikasi sumber daya untuk menerapkan permintaan tersebut. Berikut adalah formulir yang paling umum digunakan untuk menentukan URI:

Request-URI = "*" | absoluteURI | abs_path | authority
SN Metode dan Deskripsi
1 Tanda bintang *digunakan saat permintaan HTTP tidak berlaku untuk sumber daya tertentu, tetapi untuk server itu sendiri, dan hanya diizinkan jika metode yang digunakan tidak selalu berlaku untuk sumber daya. Sebagai contoh:

OPTIONS * HTTP/1.1

2 Itu absoluteURIdigunakan saat permintaan HTTP dibuat ke proxy. Proksi diminta untuk meneruskan permintaan atau menyervisnya dari cache yang valid, dan mengembalikan responsnya. Sebagai contoh:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 Bentuk URI Permintaan yang paling umum adalah yang digunakan untuk mengidentifikasi sumber daya di gateway atau server asal. Misalnya, klien yang ingin mengambil sumber daya di atas langsung dari server asal akan membuat koneksi TCP ke port 80 dari host "www.w3.org" dan mengirimkan baris:

GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org

Perhatikan bahwa jalur absolut tidak boleh kosong; jika tidak ada yang ada di URI asli, HARUS diberikan sebagai "/" (root server)

Minta Kolom Header

Kita akan mempelajari General-header dan Entity-header dalam bab terpisah ketika kita akan mempelajari field header HTTP. Untuk saat ini, mari kita periksa apa itu bidang tajuk Permintaan.

Bidang header permintaan memungkinkan klien untuk menyampaikan informasi tambahan tentang permintaan, dan tentang klien itu sendiri, ke server. Bidang-bidang ini bertindak sebagai pengubah permintaan dan ada bidang-bidang penting Judul-permintaan berikut yang tersedia yang dapat digunakan berdasarkan kebutuhan.

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

Anda dapat memperkenalkan bidang kustom Anda jika Anda akan menulis Klien dan Server Web kustom Anda sendiri.

Contoh Pesan Permintaan

Sekarang mari kita gabungkan semuanya untuk membentuk permintaan HTTP untuk diambil hello.htm halaman dari server web yang berjalan di tutorialspoint.com

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Di sini kami tidak mengirimkan data permintaan apa pun ke server karena kami mengambil halaman HTML rencana dari server. Koneksi adalah tajuk umum yang digunakan di sini dan tajuk lainnya adalah tajuk permintaan. Berikut adalah satu contoh lagi di mana kami mengirim data formulir ke server menggunakan isi pesan permintaan:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Di sini, URL yang diberikan /cgi-bin/process.cgi akan digunakan untuk memproses data yang dilewatkan dan karenanya tanggapan akan disetel kembali. Sinicontent-type memberitahu server bahwa data yang lewat adalah data formulir web sederhana dan lengthakan menjadi panjang sebenarnya dari data yang dimasukkan ke dalam badan pesan. Contoh berikut menunjukkan bagaimana Anda bisa meneruskan XML rencana ke server web Anda:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>

Setelah menerima dan menafsirkan pesan permintaan, server menanggapi dengan pesan tanggapan HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Bagian berikut akan menjelaskan setiap entitas yang digunakan dalam pesan HTTP.

Message Status-Line

Status-Line terdiri dari versi protokol diikuti dengan kode status numerik dan frase tekstual yang terkait. Elemen dipisahkan oleh spasi karakter SP.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Mari kita bahas setiap bagian yang disebutkan di Status-Line.

Versi HTTP

Server yang mendukung HTTP versi 1.1 akan mengembalikan informasi versi berikut:

HTTP-Version = HTTP/1.1

Kode status

Elemen Kode-Status adalah bilangan bulat 3-digit dimana digit pertama dari Kode-Status mendefinisikan kelas respon dan dua digit terakhir tidak memiliki peran kategorisasi. Ada 5 nilai untuk digit pertama:

SN Kode dan Deskripsi
1 1xx: Informational
Ini berarti permintaan diterima dan proses berkelanjutan.
2 2xx: Success
Artinya tindakan itu berhasil diterima, dipahami, dan diterima.
3 3xx: Redirection
Ini berarti tindakan lebih lanjut harus diambil untuk menyelesaikan permintaan tersebut.
4 4xx: Client Error
Ini berarti permintaan tersebut mengandung sintaks yang buruk atau tidak dapat dipenuhi
5 5xx: Server Error
Server gagal memenuhi permintaan yang tampaknya valid

Kode status HTTP dapat dikembangkan dan aplikasi HTTP tidak diperlukan untuk memahami arti dari semua kode status terdaftar. Daftar semua kode status telah diberikan dalam bab terpisah untuk referensi Anda.

Bidang Header Respons

Kita akan mempelajari General-header dan Entity-header dalam bab terpisah ketika kita akan mempelajari field header HTTP. Untuk saat ini, mari kita periksa apa itu bidang header Respon.

Kolom header-respons memungkinkan server menyampaikan informasi tambahan tentang respons yang tidak dapat ditempatkan di Status- Line. Bidang tajuk ini memberikan informasi tentang server dan tentang akses lebih lanjut ke sumber daya yang diidentifikasi oleh URI Permintaan.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Anda dapat memperkenalkan bidang kustom Anda jika Anda akan menulis Klien Web dan Server kustom Anda sendiri.

Contoh Pesan Respon

Sekarang mari kita gabungkan semuanya untuk membentuk respons HTTP untuk permintaan yang akan diambil hello.htm halaman dari server web yang berjalan di tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Berikut adalah contoh pesan respon HTTP yang menunjukkan kondisi kesalahan ketika web server tidak dapat menemukan halaman yang diminta:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

Berikut adalah contoh pesan respon HTTP yang menunjukkan kondisi kesalahan ketika server web menemukan versi HTTP yang salah dalam permintaan HTTP yang diberikan:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.<p>
   <p>The request line contained invalid characters following the protocol string.<p>
</body>
</html>

Kumpulan metode umum untuk HTTP / 1.1 ditentukan di bawah dan kumpulan ini dapat diperluas berdasarkan kebutuhan. Nama metode ini peka huruf besar dan kecil dan harus digunakan dalam huruf besar.

SN Metode dan Deskripsi
1 GET
Metode GET digunakan untuk mengambil informasi dari server yang diberikan menggunakan URI yang diberikan. Permintaan yang menggunakan GET seharusnya hanya mengambil data dan tidak memiliki efek lain pada data.
2 HEAD
Sama seperti GET, tetapi hanya mentransfer baris status dan bagian header.
3 POST
Permintaan POST digunakan untuk mengirim data ke server, misalnya informasi pelanggan, unggah file dll menggunakan formulir HTML.
4 PUT
Ganti semua representasi saat ini dari sumber daya target dengan konten yang diunggah.
5 DELETE
Hapus semua representasi saat ini dari sumber daya target yang diberikan oleh URI.
6 CONNECT
Buat terowongan ke server yang diidentifikasi oleh URI tertentu.
7 OPTIONS
Jelaskan opsi komunikasi untuk sumber daya target.
8 TRACE
Lakukan pengujian loop-kembali pesan di sepanjang jalur ke sumber daya target.

GET Metode

Permintaan GET mengambil data dari server web dengan menentukan parameter di bagian URL permintaan. Ini adalah metode utama yang digunakan untuk pengambilan dokumen. Berikut ini adalah contoh sederhana yang menggunakan metode GET untuk mengambil hello.htm:

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Berikut ini akan menjadi respon server terhadap permintaan GET di atas:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Accept-Ranges: bytes
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Metode HEAD

Metode HEAD secara fungsional seperti GET, kecuali bahwa server membalas dengan baris respons dan header, tetapi tanpa badan-entitas. Berikut ini adalah contoh sederhana yang menggunakan metode HEAD untuk mengambil informasi header tentang hello.htm:

HEAD /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Berikut ini akan menjadi respon server terhadap permintaan GET di atas:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Accept-Ranges: bytes
Content-Length: 88
Content-Type: text/html
Connection: Closed

Anda dapat melihat bahwa di sini server tidak mengirimkan data apa pun setelah header.

Metode POST

Metode POST digunakan ketika Anda ingin mengirimkan beberapa data ke server, misalnya update file, data form dll. Berikut contoh sederhana yang memanfaatkan metode POST untuk mengirimkan data form ke server yang akan diproses oleh sebuah process.cgi dan akhirnya tanggapan akan dikembalikan:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: 88
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>

Proses skrip sisi server.cgi memproses data yang dilewatkan dan mengirim respons berikut:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Vary: Authorization,Accept
Accept-Ranges: bytes
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Request Processed Successfully</h1>
</body>
</html>

Metode PUT

Metode PUT digunakan untuk meminta server untuk menyimpan badan entitas yang disertakan di lokasi yang ditentukan oleh URL yang diberikan. Contoh berikut meminta server untuk menyimpan badan entitas yang diberikanhello.htm di root server:

PUT /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Connection: Keep-Alive
Content-type: text/html
Content-Length: 182

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Server akan menyimpan badan entitas tertentu di hello.htm file dan akan mengirimkan respons berikut kembali ke klien:

HTTP/1.1 201 Created
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>
<h1>The file was created.</h1>
</body>
</html>

HAPUS Metode

Metode DELETE digunakan untuk meminta server menghapus file di lokasi yang ditentukan oleh URL yang diberikan. Contoh berikut meminta server untuk menghapus file yang diberikanhello.htm di root server:

DELETE /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Connection: Keep-Alive

Server akan menghapus file yang disebutkan hello.htm dan akan mengirimkan tanggapan berikut kembali ke klien:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Content-type: text/html
Content-length: 30
Connection: Closed

<html>
<body>
<h1>URL deleted.</h1>
</body>
</html>

Metode HUBUNGKAN

Metode CONNECT digunakan oleh klien untuk membuat koneksi jaringan ke server web melalui HTTP. Contoh berikut meminta koneksi dengan server web yang berjalan di host tutorialspoint.com:

CONNECT www.tutorialspoint.com HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Sambungan dibuat dengan server dan respons berikut dikirim kembali ke klien:

HTTP/1.1 200 Connection established
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)

Metode OPTIONS

Metode OPTIONS digunakan oleh klien untuk mengetahui apa saja metode HTTP dan opsi lain yang didukung oleh server web. Klien dapat menentukan URL untuk metode OPTIONS, atau tanda bintang (*) untuk merujuk ke seluruh server. Contoh berikut meminta daftar metode yang didukung oleh server web yang berjalan di tutorialspoint.com:

OPTIONS * HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Server akan mengirimkan informasi berdasarkan konfigurasi server saat ini, misalnya:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Type: httpd/unix-directory

Metode TRACE

Metode TRACE digunakan untuk setiap konten Permintaan HTTP kembali ke pemohon yang dapat digunakan untuk tujuan debugging pada saat pengembangan. Contoh berikut menunjukkan penggunaan metode TRACE:

TRACE / HTTP/1.1
Host: www.tutorialspoint.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Server akan mengirimkan pesan berikut sebagai tanggapan atas permintaan di atas:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: message/http
Content-Length: 39
Connection: Closed

TRACE / HTTP/1.1
Host: www.tutorialspoint.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Elemen Kode-Status dalam respons server, adalah bilangan bulat 3-digit di mana digit pertama dari Kode-Status mendefinisikan kelas respons dan dua digit terakhir tidak memiliki peran kategorisasi. Ada 5 nilai untuk digit pertama:

SN Kode dan Deskripsi
1 1xx: Informational
Ini berarti permintaan diterima dan proses berkelanjutan.
2 2xx: Success
Artinya tindakan itu berhasil diterima, dipahami, dan diterima.
3 3xx: Redirection
Ini berarti tindakan lebih lanjut harus diambil untuk menyelesaikan permintaan tersebut.
4 4xx: Client Error
Ini berarti permintaan tersebut mengandung sintaks yang buruk atau tidak dapat dipenuhi
5 5xx: Server Error
Server gagal memenuhi permintaan yang tampaknya valid

Kode status HTTP dapat dikembangkan dan aplikasi HTTP tidak diperlukan untuk memahami arti dari semua kode status terdaftar. Berikut ini adalah daftar semua kode status.

1xx: Informasi

Pesan: Deskripsi:
100 Lanjutkan Hanya sebagian dari permintaan telah diterima oleh server, tetapi selama itu belum ditolak, klien harus melanjutkan permintaan
101 Protokol Perpindahan Server beralih protokol

2xx: Berhasil

Pesan: Deskripsi:
200 OK Permintaannya oke
201 Dibuat Permintaan selesai, dan sumber daya baru dibuat 
202 Diterima Permintaan diterima untuk diproses, tetapi pemrosesan tidak selesai
203 Informasi Non-otoritatif Informasi di header entitas berasal dari salinan lokal atau pihak ketiga, bukan dari server asli.
204 Tidak Ada Konten Kode status dan tajuk diberikan dalam respons, tetapi tidak ada badan-entitas dalam balasan.
205 Atur Ulang Konten Browser harus menghapus formulir yang digunakan untuk transaksi ini untuk masukan tambahan.
206 Konten Parsial Server mengembalikan sebagian data dari ukuran yang diminta. Digunakan untuk menanggapi permintaan yang menentukan header Range . Server harus menentukan rentang yang disertakan dalam respons dengan header Rentang Konten .

3xx: Pengalihan

Pesan: Deskripsi:
300 Pilihan Ganda Daftar tautan. Pengguna dapat memilih link dan pergi ke lokasi tersebut. Maksimal lima alamat  
301 Pindah Secara Permanen Halaman yang diminta telah dipindahkan ke url baru 
302 Ditemukan Halaman yang diminta telah dipindahkan sementara ke url baru 
303 Lihat Lainnya Halaman yang diminta dapat ditemukan di bawah url yang berbeda 
304 Tidak Dimodifikasi Ini adalah kode respons untuk header If-Modified-Because atau If-None-Match , di mana URL-nya belum diubah sejak tanggal yang ditentukan.
305 Gunakan Proxy URL yang diminta harus diakses melalui proxy yang disebutkan di tajuk Lokasi .
306 Tidak Digunakan Kode ini digunakan di versi sebelumnya. Ini tidak lagi digunakan, tetapi kodenya sudah dipesan
307 Pengalihan Sementara Halaman yang diminta telah dipindahkan sementara ke url baru

4xx: Kesalahan Klien

Pesan: Deskripsi:
400 permintaan Buruk Server tidak memahami permintaan tersebut
401 Tidak Resmi Halaman yang diminta membutuhkan nama pengguna dan kata sandi
402 Pembayaran Diperlukan Anda belum dapat menggunakan kode ini
403 Terlarang Akses dilarang ke halaman yang diminta
404 tidak ditemukan Server tidak dapat menemukan halaman yang diminta
405 Metode Tidak Diizinkan Metode yang ditentukan dalam permintaan tidak diperbolehkan
406 Tidak Dapat Diterima Server hanya dapat menghasilkan respon yang tidak diterima oleh klien
407 Proxy Authentication Diperlukan Anda harus mengautentikasi dengan server proxy sebelum permintaan ini dapat dilayani
408 Permintaan Timeout Permintaan membutuhkan waktu lebih lama dari yang disiapkan server untuk menunggu
409 Konflik Permintaan tidak dapat diselesaikan karena ada konflik
410 Hilang Halaman yang diminta tidak lagi tersedia 
411 Panjang Diperlukan "Panjang-Konten" tidak ditentukan. Server tidak akan menerima permintaan tanpa itu 
412 Prekondisi Gagal Prasyarat yang diberikan dalam permintaan dievaluasi sebagai salah oleh server
413 Permintaan Entitas Terlalu Besar Server tidak akan menerima permintaan, karena entitas permintaan terlalu besar
414 Request-url Too Long Server tidak akan menerima permintaan, karena url terlalu panjang. Terjadi ketika Anda mengubah permintaan "post" menjadi permintaan "get" dengan informasi query yang panjang 
415 Jenis Media Tidak Didukung Server tidak akan menerima permintaan, karena jenis media tidak didukung 
416 Rentang yang Diminta Tidak Memuaskan Rentang byte yang diminta tidak tersedia dan di luar batas.
417 Harapan Gagal Harapan yang diberikan dalam kolom header permintaan Expect tidak dapat dipenuhi oleh server ini.

5xx: Kesalahan Server

Pesan: Deskripsi:
500 Internal Server Error Permintaan itu belum selesai. Server menemui kondisi yang tidak terduga
501 Tidak Diimplementasikan Permintaan itu belum selesai. Server tidak mendukung fungsionalitas yang diperlukan
502 Bad Gateway Permintaan itu belum selesai. Server menerima tanggapan yang tidak valid dari server hulu
503 Layanan tidak tersedia Permintaan itu belum selesai. Server kelebihan beban atau down untuk sementara
504 Gateway Time-out Gerbang telah habis waktunya
505 Versi HTTP Tidak Didukung Server tidak mendukung versi "protokol http"

Bidang HTTP yang lebih mati memberikan informasi yang diperlukan tentang permintaan atau respons, atau tentang objek yang dikirim di badan pesan. Ada empat jenis header pesan HTTP:

  • General-header: Bidang tajuk ini memiliki penerapan umum untuk pesan permintaan dan tanggapan.

  • Client Request-header: Bidang tajuk ini hanya dapat diterapkan untuk pesan permintaan.

  • Server Response-header: Bidang tajuk ini hanya dapat diterapkan untuk pesan tanggapan.

  • Entity-header: Bidang header ini menentukan metainformation tentang badan-entitas atau, jika tidak ada badan

Header Umum

Kontrol cache

Kolom header umum Cache-Control digunakan untuk menentukan arahan yang HARUS dipatuhi oleh semua sistem cache. Berikut sintaksnya:

Cache-Control : cache-request-directive|cache-response-directive

Klien atau server HTTP dapat menggunakan Cache-controlheader umum untuk menentukan parameter cache atau untuk meminta dokumen jenis tertentu dari cache. Arahan caching ditentukan dalam daftar yang dipisahkan koma. Sebagai contoh:

Cache-control: no-cache

Berikut adalah arahan permintaan cache penting yang dapat digunakan oleh klien dalam permintaan HTTP-nya:

SN Petunjuk dan Deskripsi Permintaan Cache
1 no-cache
Cache tidak boleh menggunakan respons untuk memenuhi permintaan berikutnya tanpa validasi ulang yang berhasil dengan server asal.
2 no-store
Cache tidak boleh menyimpan apa pun tentang permintaan klien atau respons server.
3 max-age = seconds
Menunjukkan bahwa klien bersedia menerima tanggapan yang usianya tidak lebih dari waktu yang ditentukan dalam hitungan detik.
4 max-stale [ = seconds ]
Menunjukkan bahwa klien bersedia menerima tanggapan yang telah melampaui waktu kedaluwarsanya. Jika detik diberikan, itu tidak boleh kedaluwarsa lebih dari waktu itu.
5 min-fresh = seconds
Menunjukkan bahwa klien bersedia menerima respons yang masa kesegarannya tidak kurang dari usia saat ini ditambah waktu yang ditentukan dalam hitungan detik.
6 no-transform
Jangan mengonversi badan entitas.
7 only-if-cached
Jangan ambil data baru. Cache dapat mengirim dokumen hanya jika ada di dalam cache, dan tidak boleh menghubungi server asal untuk melihat apakah ada salinan yang lebih baru.

Ada perintah respons cache penting berikut yang dapat digunakan oleh server dalam respons HTTP-nya:

SN Petunjuk dan Deskripsi Permintaan Cache
1 public
Menunjukkan bahwa respons dapat di-cache oleh cache apa pun.
2 private
Menunjukkan bahwa semua atau sebagian dari pesan tanggapan ditujukan untuk satu pengguna dan tidak boleh di-cache oleh cache bersama.
3 no-cache
Cache tidak boleh menggunakan respons untuk memenuhi permintaan berikutnya tanpa validasi ulang yang berhasil dengan server asal.
4 no-store
Cache tidak boleh menyimpan apa pun tentang permintaan klien atau respons server.
5 no-transform
Jangan mengonversi badan entitas.
6 must-revalidate
Cache harus memverifikasi status dokumen basi sebelum menggunakannya dan yang kedaluwarsa tidak boleh digunakan.
7 proxy-revalidate
Perintah proxy-revalidate memiliki arti yang sama dengan perintah must-revalidate, kecuali bahwa itu tidak berlaku untuk cache agen pengguna yang tidak dibagikan.
8 max-age = seconds
Menunjukkan bahwa klien bersedia menerima tanggapan yang usianya tidak lebih dari waktu yang ditentukan dalam hitungan detik.
9 s-maxage = seconds
Usia maksimum yang ditentukan oleh perintah ini menggantikan usia maksimum yang ditentukan oleh perintah max-age atau header Expires. Direktif s-maxage selalu diabaikan oleh cache pribadi.

Koneksi

Bidang Connection general-header memungkinkan pengirim menentukan opsi yang diinginkan untuk koneksi tertentu dan tidak boleh dikomunikasikan oleh proxy melalui koneksi lebih lanjut. Berikut ini adalah sintaks sederhana menggunakan header koneksi:

Connection : "Connection"

HTTP / 1.1 mendefinisikan opsi koneksi "tertutup" bagi pengirim untuk memberi sinyal bahwa koneksi akan ditutup setelah penyelesaian respons. Sebagai contoh:

Connection: Closed

Secara default, HTTP 1.1 menggunakan koneksi persisten, di mana koneksi tidak secara otomatis menutup setelah transaksi. HTTP 1.0, di sisi lain, tidak memiliki koneksi persisten secara default. Jika klien 1.0 ingin menggunakan koneksi persisten, ia menggunakankeep-alive parameter sebagai berikut:

Connection: keep-alive

Tanggal

Semua stempel tanggal / waktu HTTP HARUS ditunjukkan dalam Greenwich Mean Time (GMT), tanpa kecuali. Aplikasi HTTP diizinkan untuk menggunakan salah satu dari tiga representasi stempel tanggal / waktu berikut:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Di sini format pertama adalah yang paling disukai.

Pragma

Field Pragma general-header digunakan untuk menyertakan arahan spesifik-implementasi yang mungkin berlaku untuk semua penerima di sepanjang rantai permintaan / tanggapan. Sebagai contoh:

Pragma: no-cache

Satu-satunya direktif yang didefinisikan dalam HTTP / 1.0 adalah arahan no-cache dan dipertahankan dalam HTTP 1.1 untuk kompatibilitas ke belakang. Tidak ada arahan Pragma baru yang akan ditentukan di masa depan.

Cuplikan

Nilai bidang umum Trailer menunjukkan bahwa kumpulan bidang tajuk yang diberikan ada di cuplikan pesan yang dikodekan dengan pengkodean transfer terpotong. Berikut ini adalah sintaks bidang tajuk Trailer:

Trailer : field-name

Kolom header pesan yang tercantum di kolom header Trailer tidak boleh menyertakan kolom header berikut:

  • Transfer-Encoding

  • Content-Length

  • Trailer

Transfer-Encoding

Kolom header umum Transfer-Encoding menunjukkan jenis transformasi apa yang telah diterapkan ke badan pesan untuk mentransfernya dengan aman antara pengirim dan penerima. Ini tidak sama dengan pengkodean konten karena pengkodean transfer adalah properti pesan, bukan badan entitas. Berikut adalah sintaks dari kolom header Transfer-Encoding:

Transfer-Encoding: chunked

Semua nilai pengkodean transfer peka huruf besar kecil.

Meningkatkan

The Peningkatan umum-header memungkinkan klien untuk menentukan apa protokol komunikasi tambahan yang mendukung dan ingin menggunakan jika temuan Server pantaskah protokol switch. Sebagai contoh:

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

Bidang header Upgrade dimaksudkan untuk memberikan mekanisme sederhana untuk transisi dari HTTP / 1.1 ke beberapa protokol lain yang tidak kompatibel

Melalui

The Via umum-header harus digunakan oleh gateway dan proxy untuk menunjukkan protokol menengah dan penerima. Misalnya, pesan permintaan dapat dikirim dari agen pengguna HTTP / 1.0 ke kode proxy internal bernama "fred", yang menggunakan HTTP / 1.1 untuk meneruskan permintaan ke proxy publik di nowhere.com, yang melengkapi permintaan dengan meneruskannya ke server asal di www.ics.uci.edu. Permintaan yang diterima oleh www.ics.uci.edu kemudian akan memiliki bidang header Via berikut:

Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

Bidang header Upgrade dimaksudkan untuk memberikan mekanisme sederhana untuk transisi dari HTTP / 1.1 ke beberapa protokol lain yang tidak kompatibel

Peringatan

The Peringatan umum-header digunakan untuk membawa informasi tambahan tentang status atau transformasi pesan yang mungkin tidak tercermin dalam pesan. Sebuah tanggapan mungkin membawa lebih dari satu tajuk Peringatan.

Warning : warn-code SP warn-agent SP warn-text SP warn-date

Header Permintaan Klien

Menerima

Bidang Terima permintaan-header dapat digunakan untuk menentukan jenis media tertentu yang dapat diterima untuk respons. Berikut ini adalah sintaks umum:

Accept: type/subtype [q=qvalue]

Beberapa jenis media dapat dicantumkan dengan dipisahkan oleh koma dan nilai q opsional mewakili tingkat kualitas yang dapat diterima untuk jenis yang diterima dalam skala 0 hingga 1. Berikut adalah contohnya:

Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c

Ini akan diartikan sebagai text/html dan text/x-c adalah jenis media yang disukai, tetapi jika tidak ada, kirim text/x-dvi entitas, dan jika itu tidak ada, kirim text/plain kesatuan.

Terima-Charset

The Terima-Charset lapangan request-header dapat digunakan untuk menunjukkan apa karakter set yang diterima untuk respon. Berikut ini adalah sintaks umum:

Accept-Charset: character_set [q=qvalue]

Beberapa himpunan karakter dapat dicantumkan dengan dipisahkan oleh koma dan nilai q opsional mewakili tingkat kualitas yang dapat diterima untuk himpunan karakter yang tidak disukai pada skala 0 hingga 1. Berikut adalah contohnya:

Accept-Charset: iso-8859-5, unicode-1-1; q=0.8

Nilai khusus "*", jika ada di Accept-Charset lapangan, cocok dengan setiap himpunan karakter dan jika tidak Accept-Charset header ada, defaultnya adalah setiap rangkaian karakter dapat diterima.

Terima-Enkode

The Terima-Encoding bidang request-header mirip dengan Menerima, tetapi membatasi konten-pengkodean yang dapat diterima di respon. Berikut ini adalah sintaks umum:

Accept-Encoding: encoding types

Berikut ini contohnya:

Accept-Encoding: compress, gzip
Accept-Encoding:
Accept-Encoding: *
Accept-Encoding: compress;q=0.5, gzip;q=1.0
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0

Terima-Bahasa

The Terima-Bahasa bidang request-header mirip dengan Menerima, tetapi membatasi set bahasa alami yang disukai sebagai respon terhadap permintaan. Berikut ini adalah sintaks umum:

Accept-Language: language [q=qvalue]

Beberapa bahasa dapat didaftarkan dengan dipisahkan oleh koma dan nilai q opsional mewakili tingkat kualitas yang dapat diterima untuk bahasa yang tidak disukai pada skala 0 hingga 1. Berikut adalah contohnya:

Accept-Language: da, en-gb;q=0.8, en;q=0.7

Otorisasi

The Otorisasi nilai bidang permintaan-header terdiri dari mandat yang berisi informasi otentikasi dari agen pengguna untuk ranah sumber daya yang diminta. Berikut ini adalah sintaks umum:

Authorization : credentials

Spesifikasi HTTP / 1.0 mendefinisikan skema otorisasi DASAR, di mana parameter otorisasi adalah string username:password dikodekan dalam basis 64. Berikut ini adalah contohnya:

Authorization: BASIC Z3Vlc3Q6Z3Vlc3QxMjM=

Nilai diterjemahkan menjadi adalah guest:guest123 dimana guest adalah ID pengguna dan guest123 adalah kata sandinya.

Kue kering

The Cookie nilai bidang permintaan-header berisi pasangan nama / nilai informasi yang disimpan untuk URL itu. Berikut ini adalah sintaks umum:

Cookie: name=value

Beberapa cookie dapat ditentukan dengan dipisahkan oleh titik koma sebagai berikut:

Cookie: name1=value1;name2=value2;name3=value3

Mengharapkan

Kolom Expect request-header digunakan untuk menunjukkan bahwa perilaku server tertentu diperlukan oleh klien. Berikut ini adalah sintaks umum:

Expect : 100-continue | expectation-extension

Jika server menerima permintaan yang berisi bidang Ekspektasi yang menyertakan ekstensi ekspektasi yang tidak didukungnya, server harus merespons dengan status 417 (Ekspektasi Gagal).

Dari

Bidang Dari header permintaan berisi alamat email Internet untuk pengguna manusia yang mengontrol agen pengguna yang meminta. Berikut ini contoh sederhananya:

From: [email protected]

Bidang tajuk ini dapat digunakan untuk tujuan pencatatan dan sebagai sarana untuk mengidentifikasi sumber permintaan yang tidak valid atau tidak diinginkan.

Tuan rumah

Kolom Host request-header digunakan untuk menentukan host Internet dan nomor port sumber daya yang diminta. Berikut ini adalah sintaks umum:

Host : "Host" ":" host [ ":" port ] ;

SEBUAH hosttanpa informasi port tambahan berarti port default, yaitu 80. Misalnya, permintaan pada server asal untuk http://www.w3.org/pub/WWW/ akan menjadi:

GET /pub/WWW/ HTTP/1.1
Host: www.w3.org

Jika-Cocok

The Jika-Match lapangan request-header digunakan dengan metode untuk membuatnya bersyarat. Header ini meminta server untuk melakukan metode yang diminta hanya jika nilai yang diberikan di tag ini cocok dengan tag entitas yang diwakili olehETag. Berikut ini adalah sintaks umum:

If-Match : entity-tag

Tanda bintang (*) cocok dengan entitas apa pun, dan transaksi berlanjut hanya jika entitas tersebut ada. Berikut adalah contoh yang mungkin:

If-Match: "xyzzy"
If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
If-Match: *

Jika tidak ada tag entitas yang cocok, atau jika "*" diberikan dan tidak ada entitas saat ini, server tidak boleh menjalankan metode yang diminta, dan harus mengembalikan respons 412 (Prekondisi Gagal).

Jika-Dimodifikasi-Sejak

Kolom If-Modified-Because request-header digunakan dengan metode untuk membuatnya bersyarat. Jika URL yang diminta belum diubah sejak waktu yang ditentukan di bidang ini, entitas tidak akan dikembalikan dari server; sebaliknya, respons 304 (tidak diubah) akan dikembalikan tanpa badan pesan apa pun. Berikut ini adalah sintaks umum:

If-Modified-Since : HTTP-date

Contoh dari bidang tersebut adalah:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Jika tidak ada tag entitas yang cocok, atau jika "*" diberikan dan tidak ada entitas saat ini, server tidak boleh menjalankan metode yang diminta, dan harus mengembalikan respons 412 (Prekondisi Gagal).

Jika-Tidak Ada-Cocok

The Jika-Tidak-Match lapangan request-header digunakan dengan metode untuk membuatnya bersyarat. Header ini meminta server untuk melakukan metode yang diminta hanya jika salah satu nilai yang diberikan di tag ini cocok dengan tag entitas yang diwakili olehETag. Berikut ini adalah sintaks umum:

If-None-Match : entity-tag

Tanda bintang (*) cocok dengan entitas apa pun, dan transaksi berlanjut hanya jika entitas tersebut tidak ada. Berikut adalah contoh yang mungkin:

If-None-Match: "xyzzy"
If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
If-None-Match: *

If-Range

The Jika-Rentang lapangan request-header dapat digunakan dengan GET bersyarat untuk meminta hanya bagian dari entitas yang hilang, jika belum berubah, dan seluruh entitas jika itu telah berubah. Berikut ini adalah sintaks umum:

If-Range : entity-tag | HTTP-date

Entah tag entitas atau tanggal dapat digunakan untuk mengidentifikasi entitas parsial yang sudah diterima. Sebagai contoh:

If-Range: Sat, 29 Oct 1994 19:43:31 GMT

Di sini, jika dokumen belum diubah sejak tanggal yang ditentukan, server mengembalikan kisaran byte yang diberikan oleh header Range, sebaliknya, ia mengembalikan semua dokumen baru.

Jika-Tidak Dimodifikasi-Sejak

Kolom If-Unmodified-Because request-header digunakan dengan metode untuk membuatnya bersyarat. Berikut ini adalah sintaks umum:

If-Unmodified-Since : HTTP-date

Jika sumber daya yang diminta belum diubah sejak waktu yang ditentukan dalam bidang ini, server harus melakukan operasi yang diminta seolah-olah header If-Unmodified-Because tidak ada. Sebagai contoh:

If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Jika permintaan biasanya akan menghasilkan apa pun selain status 2xx atau 412, header If-Unmodified-Because harus diabaikan.

Max-Forward

Kolom Max-Forward request-header menyediakan mekanisme dengan metode TRACE dan OPTIONS untuk membatasi jumlah proxy atau gateway yang dapat meneruskan permintaan ke server masuk berikutnya. Berikut ini adalah sintaks umum:

Max-Forwards : n

Nilai Max-Forwards adalah bilangan bulat desimal yang menunjukkan berapa kali pesan permintaan ini dapat diteruskan. Ini berguna untuk debugging dengan metode TRACE, menghindari loop tak terbatas. Sebagai contoh:

Max-Forwards : 5

Bidang tajuk Max-Forward dapat diabaikan untuk semua metode lain yang ditentukan dalam spesifikasi HTTP.

Proxy-Authorization

The Proxy-Authorization bidang request-header memungkinkan klien untuk mengidentifikasi sendiri (atau user) untuk proxy yang memerlukan otentikasi. Berikut ini adalah sintaks umum:

Proxy-Authorization : credentials

Nilai bidang Proxy-Authorization terdiri dari kredensial yang berisi informasi autentikasi agen pengguna untuk proxy dan / atau bidang sumber daya yang diminta.

Jarak

Kolom header permintaan Range menentukan kisaran parsial dari konten yang diminta dari dokumen. Berikut ini adalah sintaks umum:

Range: bytes-unit=first-byte-pos "-" [last-byte-pos]

Nilai byte-pos pertama dalam spesifikasi rentang-byte memberikan offset-byte dari byte pertama dalam suatu rentang. Nilai byte-terakhir-pos memberikan byte-offset dari byte terakhir dalam rentang; artinya, posisi byte yang ditentukan bersifat inklusif. Anda dapat menentukan unit byte sebagai byte Offset byte mulai dari nol. Berikut ini contoh sederhananya:

- The first 500 bytes 
Range: bytes=0-499

- The second 500 bytes
Range: bytes=500-999

- The final 500 bytes
Range: bytes=-500

- The first and last bytes only
Range: bytes=0-0,-1

Beberapa rentang dapat dicantumkan, dipisahkan dengan koma. Jika digit pertama dalam kisaran byte yang dipisahkan koma hilang, kisaran diasumsikan dihitung dari akhir dokumen. Jika digit kedua hilang, kisarannya adalah byte n sampai akhir dokumen.

Perujuk

Kolom Referer request-header memungkinkan klien untuk menentukan alamat (URI) sumber daya yang URL-nya telah diminta. Berikut ini adalah sintaks umum:

Referer : absoluteURI | relativeURI

Berikut ini contoh sederhananya:

Referer: http://www.tutorialspoint.org/http/index.htm

Jika nilai bidang adalah URI relatif, itu harus ditafsirkan relatif terhadap Request-URI .

TE

The TE bidang header permintaan menunjukkan apa ekstensi Transfer-coding itu bersedia menerima respon dan apakah atau tidak itu adalah bersedia menerima bidang cuplikan dalam chunked mentransfer-coding . Berikut ini adalah sintaks umum:

TE   : t-codings

Kehadiran kata kunci "cuplikan" menunjukkan bahwa klien bersedia menerima bidang cuplikan dalam pengkodean transfer terpotong dan ditentukan dengan salah satu cara:

TE: deflate
TE:
TE: trailers, deflate;q=0.5

Jika nilai bidang TE kosong atau jika tidak ada bidang TE, satu-satunya kode transfer yang dipotong . Pesan tanpa pengkodean transfer selalu dapat diterima.

Agen pengguna

The User-Agent lapangan permintaan-header berisi informasi tentang agen pengguna yang berasal permintaan. Berikut ini adalah sintaks umum:

User-Agent : product | comment

Contoh:

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Header Respons Server

Terima-Rentang

The Terima-Ranges lapangan respon-header memungkinkan server untuk menunjukkan penerimaan permintaan jangkauan untuk sumber daya. Berikut ini adalah sintaks umum:

Accept-Ranges  : range-unit | none

Misalnya, server yang menerima permintaan rentang byte dapat mengirim

Accept-Ranges: bytes

Server yang tidak menerima permintaan jangkauan apa pun untuk sumber daya dapat mengirim:

Accept-Ranges: none

Ini akan menyarankan klien untuk tidak mencoba permintaan jangkauan.

Usia

The Age lapangan respon-header menyampaikan estimasi pengirim dari jumlah waktu sejak respon (atau revalidation nya) dihasilkan pada server asal. Berikut ini adalah sintaks umum:

Age : delta-seconds

Nilai usia adalah bilangan bulat desimal non-negatif, mewakili waktu dalam detik. Berikut ini contoh sederhananya:

Age: 1030

Server HTTP / 1.1 yang menyertakan cache harus menyertakan bidang header Usia di setiap respons yang dihasilkan dari cache-nya sendiri.

ETag

Bidang header respons ETag memberikan nilai saat ini dari tag entitas untuk varian yang diminta. Berikut ini adalah sintaks umum:

ETag :  entity-tag

Berikut adalah contoh sederhana:

ETag: "xyzzy"
ETag: W/"xyzzy"
ETag: ""

Lokasi

The Lokasi lapangan respon-header digunakan untuk mengarahkan penerima ke lokasi selain Permintaan-URI untuk penyelesaian. Berikut ini adalah sintaks umum:

Location : absoluteURI

Berikut ini contoh sederhananya:

Location: http://www.tutorialspoint.org/http/index.htm

Bidang header Lokasi Konten berbeda dari Lokasi di Lokasi Konten mengidentifikasi lokasi asli entitas yang disertakan dalam permintaan.

Proxy-Authenticate

The Proxy-Otentikasi lapangan respon-header harus dimasukkan sebagai bagian dari respon 407 (Proxy Authentication Required). Berikut ini adalah sintaks umum:

Proxy-Authenticate  : challenge

Retry-After

The Retry-Setelah lapangan respon-header dapat digunakan dengan (Unavailable Service) respon 503 untuk menunjukkan berapa lama layanan ini diharapkan akan tersedia untuk klien yang meminta. Berikut ini adalah sintaks umum:

Retry-After : HTTP-date | delta-seconds

Berikut adalah dua contoh sederhana:

Retry-After: Fri, 31 Dec 1999 23:59:59 GMT
Retry-After: 120

Dalam contoh terakhir, penundaan adalah 2 menit.

Server

The Server lapangan respon-header berisi informasi tentang perangkat lunak yang digunakan oleh server asal untuk menangani permintaan. Berikut ini adalah sintaks umum:

Server : product | comment

Berikut ini contoh sederhananya:

Server: Apache/2.2.14 (Win32)

Jika respons diteruskan melalui proxy, aplikasi proxy tidak boleh mengubah header respons Server.

Set-Cookie

The Set-Cookie lapangan respon-header berisi pasangan nama / nilai informasi untuk mempertahankan untuk URL ini. Berikut ini adalah sintaks umum:

Set-Cookie: NAME=VALUE; OPTIONS

Header respons Set-Cookie terdiri dari token Set-Cookie :, diikuti dengan daftar satu atau beberapa cookie yang dipisahkan koma. Berikut adalah nilai yang mungkin Anda tentukan sebagai opsi:

SN Opsi dan Deskripsi
1 Comment=comment
Opsi ini dapat digunakan untuk menentukan komentar apa pun yang terkait dengan cookie.
2 Domain=domain
Atribut domain menentukan domain yang valid untuk cookie.
3 Expires=Date-time
Tanggal cookie akan kedaluwarsa. Jika ini kosong, cookie akan kedaluwarsa saat pengunjung keluar dari browser
4 Path=path
Atribut Path menentukan subkumpulan URL tempat cookie ini diterapkan.
5 Secure
Ini menginstruksikan agen pengguna untuk mengembalikan cookie hanya di bawah koneksi aman.

Berikut adalah contoh tajuk cookie sederhana yang dibuat oleh server:

Set-Cookie: name1=value1,name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT

Berbeda

Kolom header respons Vary menentukan bahwa entitas memiliki beberapa sumber dan oleh karena itu dapat bervariasi sesuai dengan daftar header permintaan yang ditentukan. Berikut ini adalah sintaks umum:

Vary : field-name

Anda dapat menentukan beberapa tajuk yang dipisahkan dengan koma dan nilai tanda bintang "*" memberi sinyal bahwa parameter yang tidak ditentukan tidak terbatas pada tajuk permintaan. Berikut ini contoh sederhananya:

Vary: Accept-Language, Accept-Encoding

Di sini nama bidang peka huruf besar kecil.

WWW-Otentikasi

The WWW-Authenticate lapangan respon-header harus disertakan dalam 401 pesan (tidak sah) respon. Nilai bidang terdiri dari setidaknya satu tantangan yang menunjukkan skema otentikasi dan parameter yang berlaku untuk Request-URI. Berikut ini adalah sintaks umum:

WWW-Authenticate : challenge

WWW- Otentikasi nilai bidang karena mungkin berisi lebih dari satu tantangan, atau jika lebih dari satu bidang tajuk WWW-Otentikasi disediakan, konten tantangan itu sendiri dapat berisi daftar parameter otentikasi yang dipisahkan koma. Berikut ini contoh sederhananya:

WWW-Authenticate: BASIC realm="Admin"

Header Entitas

Mengizinkan

Bidang Izinkan header entitas mencantumkan rangkaian metode yang didukung oleh sumber daya yang diidentifikasi oleh URI Permintaan. Berikut ini adalah sintaks umum:

Allow : Method

Anda dapat menentukan beberapa metode dipisahkan dengan koma. Berikut ini contoh sederhananya:

Allow: GET, HEAD, PUT

Bidang ini tidak dapat mencegah klien untuk mencoba metode lain.

Pengkodean Konten

The Content-Encoding bidang entitas-header digunakan sebagai pengubah ke media-jenis. Berikut ini adalah sintaks umum:

Content-Encoding : content-coding

Pengkodean konten adalah karakteristik entitas yang diidentifikasi oleh URI Permintaan. Berikut ini contoh sederhananya:

Content-Encoding: gzip

Jika pengkodean konten entitas dalam pesan permintaan tidak dapat diterima oleh server asal, server harus merespons dengan kode status 415 (Jenis Media Tidak Didukung).

Bahasa-Konten

The Content-Bahasa bidang entitas-header menggambarkan bahasa alami (s) dari penonton ditujukan untuk entitas tertutup. Berikut ini adalah sintaks umum:

Content-Language : language-tag

Beberapa bahasa mungkin dicantumkan untuk konten yang ditujukan untuk banyak audiens. Berikut ini contoh sederhananya:

Content-Language: mi, en

Tujuan utama Bahasa-Konten adalah untuk memungkinkan pengguna mengidentifikasi dan membedakan entitas sesuai dengan bahasa pilihan pengguna itu sendiri.

Panjang Konten

Bidang isi-panjang entitas-header menunjukkan ukuran badan-badan, dalam jumlah desimal OCTET, dikirim ke penerima atau, dalam kasus metode HEAD, ukuran badan-badan yang akan dikirim memiliki permintaan tersebut adalah GET. Berikut ini adalah sintaks umum:

Content-Length : DIGITS

Berikut ini contoh sederhananya:

Content-Length: 3495

Setiap Panjang Konten yang lebih besar dari atau sama dengan nol adalah nilai yang valid.

Lokasi-Konten

The Content-Lokasi lapangan entitas-header dapat digunakan untuk memasok lokasi sumber daya untuk entitas tertutup dalam pesan ketika entitas yang dapat diakses dari lokasi yang terpisah dari URI sumber daya yang diminta itu. Berikut ini adalah sintaks umum:

Content-Location:  absoluteURI | relativeURI

Berikut ini contoh sederhananya:

Content-Location: http://www.tutorialspoint.org/http/index.htm

Nilai Lokasi-Konten juga menentukan URI dasar untuk entitas.

Konten-MD5

The Content-MD5 bidang entitas-header dapat digunakan untuk memasok MD5 digest entitas, untuk memeriksa integritas dari pesan setelah menerima. Berikut ini adalah sintaks umum:

Content-MD5  : md5-digest using base64 of 128 bit MD5 digest as per RFC 1864

Berikut ini contoh sederhananya:

Content-MD5  : 8c2d46911f3f5a326455f0ed7a8ed3b3

Intisari MD5 dihitung berdasarkan konten badan entitas, termasuk pengkodean konten apa pun yang telah diterapkan, tetapi tidak termasuk pengkodean transfer apa pun yang diterapkan ke badan pesan.

Rentang Konten

The Content-Kisaran bidang entitas-header dikirim dengan entitas-tubuh parsial untuk menentukan di mana dalam penuh entitas-tubuh tubuh parsial harus diterapkan. Berikut ini adalah sintaks umum:

Content-Range : bytes-unit SP first-byte-pos "-" last-byte-pos

Contoh nilai byte-content-range-spec, dengan asumsi bahwa entitas tersebut berisi total 1.234 byte:

- The first 500 bytes:
Content-Range : bytes 0-499/1234

- The second 500 bytes:
Content-Range : bytes 500-999/1234

- All except for the first 500 bytes:
Content-Range : bytes 500-1233/1234

- The last 500 bytes:
Content-Range : bytes 734-1233/1234

Ketika pesan HTTP menyertakan konten dari satu rentang, konten ini dikirim dengan header Rentang Konten, dan header Panjang Konten yang menunjukkan jumlah byte yang sebenarnya ditransfer. Sebagai contoh,

HTTP/1.1 206 Partial content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: bytes 21010-47021/47022
Content-Length: 26012
Content-Type: image/gif

Jenis konten

The Content-Type lapangan entitas-header menunjukkan jenis media dari entitas-tubuh dikirim ke penerima atau, dalam kasus metode HEAD, media ketik yang akan pengirimannya memiliki permintaan telah GET. Berikut ini adalah sintaks umum:

Content-Type : media-type

Berikut ini contohnya:

Content-Type: text/html; charset=ISO-8859-4

Kedaluwarsa

The Habis bidang entitas-header memberikan tanggal / waktu setelah respon dianggap basi. Berikut ini adalah sintaks umum:

Expires : HTTP-date

Berikut ini contohnya:

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Terakhir diubah

The Last-Modified bidang entitas-header menunjukkan tanggal dan waktu di mana server asal percaya varian terakhir diubah. Berikut ini adalah sintaks umum:

Last-Modified: HTTP-date

Berikut ini contohnya:

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

HTTP biasanya digunakan untuk sistem informasi terdistribusi, di mana kinerja dapat ditingkatkan dengan menggunakan cache respons. Protokol HTTP / 1.1 menyertakan sejumlah elemen yang dimaksudkan untuk membuat cache berfungsi.

Tujuan caching di HTTP / 1.1 adalah untuk menghilangkan kebutuhan untuk mengirim permintaan dalam banyak kasus, dan untuk menghilangkan kebutuhan untuk mengirim respons penuh dalam banyak kasus lainnya.

Mekanisme cache dasar di HTTP / 1.1 adalah arahan implisit ke cache tempat validator dan waktu kedaluwarsa yang ditentukan server. Kami menggunakanCache-Control header untuk tujuan ini.

Itu Cache-Controlheader memungkinkan klien atau server untuk mengirimkan berbagai arahan baik dalam permintaan atau tanggapan. Perintah ini biasanya menggantikan algoritme cache default. Arahan caching ditentukan dalam daftar yang dipisahkan koma. Sebagai contoh:

Cache-control: no-cache

Berikut adalah arahan permintaan cache penting yang dapat digunakan oleh klien dalam permintaan HTTP-nya:

SN Petunjuk dan Deskripsi Permintaan Cache
1 no-cache
Cache tidak boleh menggunakan respons untuk memenuhi permintaan berikutnya tanpa validasi ulang yang berhasil dengan server asal.
2 no-store
Cache tidak boleh menyimpan apa pun tentang permintaan klien atau respons server.
3 max-age = seconds
Menunjukkan bahwa klien bersedia menerima tanggapan yang usianya tidak lebih dari waktu yang ditentukan dalam hitungan detik.
4 max-stale [ = seconds ]
Menunjukkan bahwa klien bersedia menerima tanggapan yang telah melampaui waktu kedaluwarsanya. Jika detik diberikan, itu tidak boleh kedaluwarsa lebih dari waktu itu.
5 min-fresh = seconds
Menunjukkan bahwa klien bersedia menerima respons yang masa kesegarannya tidak kurang dari usia saat ini ditambah waktu yang ditentukan dalam hitungan detik.
6 no-transform
Jangan mengonversi badan entitas.
7 only-if-cached
Jangan ambil data baru. Cache dapat mengirim dokumen hanya jika ada di dalam cache, dan tidak boleh menghubungi server asal untuk melihat apakah ada salinan yang lebih baru.

Ada perintah respons cache penting berikut yang dapat digunakan oleh server dalam respons HTTP-nya:

SN Petunjuk dan Deskripsi Respons Cache
1 public
Menunjukkan bahwa respons dapat di-cache oleh cache apa pun.
2 private
Menunjukkan bahwa semua atau sebagian dari pesan tanggapan ditujukan untuk satu pengguna dan tidak boleh di-cache oleh cache bersama.
3 no-cache
Cache tidak boleh menggunakan respons untuk memenuhi permintaan berikutnya tanpa validasi ulang yang berhasil dengan server asal.
4 no-store
Cache tidak boleh menyimpan apa pun tentang permintaan klien atau respons server.
5 no-transform
Jangan mengonversi badan entitas.
6 must-revalidate
Cache harus memverifikasi status dokumen basi sebelum menggunakannya dan yang kedaluwarsa tidak boleh digunakan.
7 proxy-revalidate
Perintah proxy-revalidate memiliki arti yang sama dengan perintah must-revalidate, kecuali bahwa itu tidak berlaku untuk cache agen pengguna yang tidak dibagikan.
8 max-age = seconds
Menunjukkan bahwa klien bersedia menerima tanggapan yang usianya tidak lebih dari waktu yang ditentukan dalam hitungan detik.
9 s-maxage = seconds
Usia maksimum yang ditentukan oleh perintah ini menggantikan usia maksimum yang ditentukan oleh perintah max-age atau header Expires. Direktif s-maxage selalu diabaikan oleh cache pribadi.

URL HTTP hanya dapat dikirim melalui Internet menggunakan kumpulan karakter ASCII , yang sering kali berisi karakter di luar kumpulan ASCII. Jadi karakter yang tidak aman ini harus diganti dengan% diikuti oleh dua digit heksadesimal.

Tabel berikut menunjukkan simbol ASCII dari karakter dan Simbolnya yang setara dan akhirnya penggantinya yang dapat digunakan di URL sebelum meneruskannya ke server:

ASCII Simbol Penggantian
<32   Encode dengan% xx di mana xx adalah representasi heksadesimal dari karakter tersebut.
32 ruang + atau% 20
33 ! % 21
34 " % 22
35 # % 23
36 $ % 24
37 % % 25
38 & % 26
39 ' % 27
40 ( % 28
41 ) % 29
42 * *
43 + % 2B
44 , % 2C
45 - -
46 . .
47 / % 2F
48 0 0
49 1 1
50 2 2
51 3 3
52 4 4
53 5 5
54 6 6
55 7 7
56 8 8
57 9 9
58 : % 3A
59 ; % 3B
60 < % 3C
61 = % 3D
62 > % 3E
63 ? % 3F
64 @ % 40
65 SEBUAH SEBUAH
66 B B
67 C C
68 D D
69 E E
70 F F
71 G G
72 H. H.
73 saya saya
74 J J
75 K K
76 L L
77 M M
78 N N
79 HAI HAI
80 P. P.
81 Q Q
82 R R
83 S S
84 T T
85 U U
86 V. V.
87 W W
88 X X
89 Y Y
90 Z Z
91 [ % 5B
92 \ % 5C
93 ] % 5D
94 ^ % 5E
95 _ _
96 ` % 60
97 Sebuah Sebuah
98 b b
99 c c
100 d d
101 e e
102 f f
103 g g
104 h h
105 saya saya
106 j j
107 k k
108 l l
109 m m
110 n n
111 Hai Hai
112 p p
113 q q
114 r r
115 s s
116 t t
117 u u
118 v v
119 w w
120 x x
121 y y
122 z z
123 { % 7B
124 | % 7C
125 } % 7D
126 ~ % 7E
127   % 7F
> 127   Encode dengan% xx di mana xx adalah representasi heksadesimal dari karakter tersebut

HTTP digunakan untuk komunikasi melalui internet, jadi pengembang aplikasi, penyedia informasi, dan pengguna harus menyadari batasan keamanan di HTTP / 1.1. Diskusi ini tidak menyertakan solusi definitif untuk masalah yang disebutkan di sini tetapi memberikan beberapa saran untuk mengurangi risiko keamanan.

Kebocoran Informasi Pribadi

Klien HTTP sering kali mengetahui informasi pribadi dalam jumlah besar seperti nama pengguna, lokasi, alamat email, sandi, kunci enkripsi, dll. Jadi, Anda harus sangat berhati-hati untuk mencegah kebocoran informasi ini yang tidak disengaja melalui protokol HTTP ke sumber lain.

  • Semua informasi rahasia harus disimpan di sisi server dalam bentuk terenkripsi.

  • Mengungkap versi perangkat lunak tertentu dari server mungkin memungkinkan mesin server menjadi lebih rentan terhadap serangan terhadap perangkat lunak yang diketahui mengandung lubang keamanan.

  • Proksi yang berfungsi sebagai portal melalui firewall jaringan harus berhati-hati terkait transfer informasi header yang mengidentifikasi host di belakang firewall.

  • Informasi yang dikirim di bidang Dari mungkin bertentangan dengan kepentingan privasi pengguna atau kebijakan keamanan situs mereka, dan karenanya tidak boleh dikirim tanpa pengguna dapat menonaktifkan, mengaktifkan, dan mengubah konten bidang.

  • Klien tidak boleh menyertakan bidang tajuk Perujuk dalam permintaan HTTP (tidak aman) jika laman rujukan ditransfer dengan protokol aman.

  • Penulis layanan yang menggunakan protokol HTTP tidak boleh menggunakan formulir berbasis GET untuk pengiriman data sensitif, karena ini akan menyebabkan data ini dikodekan di Request-URI

File dan nama path berdasarkan serangan

Dokumen harus dibatasi ke dokumen yang dikembalikan oleh permintaan HTTP menjadi hanya yang dimaksudkan oleh administrator server.

Misalnya, UNIX, Microsoft Windows, dan sistem operasi lain digunakan ..sebagai komponen jalur untuk menunjukkan tingkat direktori di atas yang sekarang. Pada sistem seperti itu, server HTTP HARUS melarang konstruksi seperti itu dalam URI Permintaan jika sebaliknya akan mengizinkan akses ke sumber daya di luar yang dimaksudkan untuk dapat diakses melalui server HTTP.

Spoofing DNS

Klien yang menggunakan HTTP sangat bergantung pada Layanan Nama Domain, dan karenanya umumnya rentan terhadap serangan keamanan berdasarkan kesalahan asosiasi alamat IP dan nama DNS yang disengaja. Jadi, klien perlu berhati-hati dalam mengasumsikan validitas berkelanjutan dari nomor IP / asosiasi nama DNS.

Jika klien HTTP menyimpan hasil pencarian nama host dalam cache untuk mencapai peningkatan kinerja, mereka harus mengamati informasi TTL yang dilaporkan oleh DNS. Jika klien HTTP tidak mematuhi aturan ini, mereka dapat dipalsukan ketika alamat IP server yang sebelumnya diakses berubah.

Header dan Spoofing Lokasi

Jika satu server mendukung beberapa organisasi yang tidak mempercayai satu sama lain, maka HARUS memeriksa nilai-nilai dari Lokasi dan Konten- header Lokasi dalam tanggapan yang dihasilkan di bawah kendali organisasi tersebut untuk memastikan bahwa mereka tidak mencoba untuk membatalkan sumber daya yang melaluinya. mereka tidak memiliki otoritas.

Kredensial Otentikasi

Klien HTTP dan agen pengguna yang ada biasanya menyimpan informasi autentikasi tanpa batas waktu. HTTP / 1.1. tidak menyediakan metode bagi server untuk mengarahkan klien untuk membuang kredensial yang disimpan dalam cache ini yang merupakan risiko keamanan besar.

Ada sejumlah solusi untuk bagian dari masalah ini, dan oleh karena itu disarankan untuk menggunakan perlindungan kata sandi di screen saver, waktu menganggur habis, dan metode lain yang mengurangi masalah keamanan yang melekat dalam masalah ini.

Proxy dan Caching

Proksi HTTP adalah men-in-the-middle, dan mewakili peluang untuk serangan man-in-the-middle. Proksi memiliki akses ke informasi terkait keamanan, informasi pribadi tentang pengguna dan organisasi individu, dan informasi kepemilikan milik pengguna dan penyedia konten.

Operator proxy harus melindungi sistem tempat proxy berjalan karena mereka akan melindungi sistem apa pun yang berisi atau mengirimkan informasi sensitif.

Proxy cache memberikan potensi kerentanan tambahan, karena konten cache mewakili target yang menarik untuk eksploitasi jahat. Oleh karena itu, konten cache harus dilindungi sebagai informasi sensitif.

Contoh 1

Permintaan HTTP untuk diambil hello.htmhalaman dari server web yang berjalan di tutorialspoint.com

Permintaan klien

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Respons server

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Contoh 2

Permintaan HTTP untuk diambil t.htmlhalaman yang tidak ada di server web yang berjalan di tutorialspoint.com

Permintaan klien

GET /t.html HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Respons server

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: close
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

Contoh 3

Permintaan HTTP untuk diambil hello.htmhalaman dari server web yang berjalan di tutorialspoint.com , tetapi permintaan menggunakan versi HTTP yang salah:

Permintaan klien

GET /hello.htm HTTP1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Respons server

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: close
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.<p>
   <p>The request line contained invalid characters following the protocol string.<p>
</body>
</html>

Contoh 4

Permintaan HTTP untuk mengirim data formulir ke process.cgiHalaman CGI di server web yang berjalan di tutorialspoint.com . Server mengembalikan nama yang lewat setelah mengaturnya sebagai cookie:

Permintaan klien

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: 60
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

first=Zara&last=Ali

Respons server

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 88
Set-Cookie: first=Zara,last=Ali;domain=tutorialspoint.com;Expires=Mon, 19-
Nov-2010 04:38:14 GMT;Path=/
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hello Zara Ali</h1>
</body>
</html>