Cara menggunakan set cookie usia maksimum javascript

Apakah Anda seorang programmer atau bukan, Anda telah melihatnya di mana-mana di web. Saat ini bilah alamat browser Anda menunjukkan sesuatu yang dimulai dengan "https. //". Bahkan skrip Hello World pertama Anda mengirimkan header HTTP tanpa Anda sadari. Pada artikel ini kita akan belajar tentang dasar-dasar header HTTP dan bagaimana kita dapat menggunakannya dalam aplikasi web kita

Apa itu HTTP Header?

HTTP adalah singkatan dari "Hypertext Transfer Protocol". Seluruh World Wide Web menggunakan protokol ini. Didirikan pada awal 1990-an. Hampir semua yang Anda lihat di browser Anda ditransmisikan ke komputer Anda melalui HTTP. Misalnya, saat Anda membuka halaman artikel ini, browser mungkin telah mengirimkan lebih dari 40 permintaan HTTP dan menerima tanggapan HTTP untuk setiap

Header HTTP adalah bagian inti dari permintaan dan tanggapan HTTP, dan mereka membawa informasi tentang browser klien, halaman yang diminta, server, dan banyak lagi.

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Contoh

Saat Anda mengetik url di bilah alamat, browser Anda mengirimkan permintaan HTTP dan mungkin terlihat seperti ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache
Cache-Control: no-cache

Baris pertama adalah "Baris Permintaan" yang berisi beberapa info dasar tentang permintaan tersebut. Dan sisanya adalah tajuk HTTP

Setelah permintaan tersebut, browser Anda menerima respons HTTP yang mungkin terlihat seperti ini

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_

Baris pertama adalah "Status Line", diikuti oleh "HTTP header", hingga baris kosong. Setelah itu, "konten" dimulai (dalam hal ini, keluaran HTML)

Ketika Anda melihat kode sumber halaman web di browser Anda, Anda hanya akan melihat bagian HTML dan bukan header HTTP, meskipun sebenarnya telah dikirim bersama seperti yang Anda lihat di atas

Permintaan HTTP ini juga dikirim dan diterima untuk hal lain, seperti gambar, file CSS, file JavaScript, dll. Itu sebabnya saya katakan sebelumnya bahwa browser Anda telah mengirim setidaknya 40 permintaan HTTP atau lebih ketika Anda memuat halaman artikel ini saja

Sekarang, mari kita mulai melihat strukturnya lebih terinci

Cara Melihat HTTP Header

Saya menggunakan ekstensi Firefox berikut untuk menganalisis header HTTP

  • Pembakar

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

  • Header HTTP langsung

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Di PHP

  • getallheaders() mendapatkan header permintaan. Anda juga dapat menggunakan larik $_SERVER
  • headers_list() mendapatkan header respons

Lebih lanjut pada artikel ini, kita akan melihat beberapa contoh kode di PHP

Struktur Permintaan HTTP

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Baris pertama permintaan HTTP disebut baris permintaan dan terdiri dari 3 bagian

  • "Metode" menunjukkan jenis permintaan ini. Metode yang paling umum adalah GET, POST dan HEAD
  • "Path" umumnya adalah bagian dari url yang muncul setelah host (domain). Misalnya, saat meminta "https. //bersih. tutsplus. com/tutorials/other/top-20-mysql-best-practices/" , bagian jalurnya adalah "/tutorials/other/top-20-mysql-best-practices/"
  • Bagian "protokol" berisi "HTTP" dan versinya, yang biasanya 1. 1 di peramban modern

Sisa permintaan berisi tajuk HTTP sebagai pasangan "Nama. Nilai" pada setiap baris. Ini berisi berbagai informasi tentang permintaan HTTP dan browser Anda. Misalnya, baris "User-Agent" memberikan informasi tentang versi browser dan Sistem Operasi yang Anda gunakan. "Accept-Encoding" memberi tahu server jika browser Anda dapat menerima output terkompresi seperti gzip

Anda mungkin memperhatikan bahwa data cookie juga dikirimkan dalam header HTTP. Dan jika ada url template, itu akan ada di header juga

Sebagian besar tajuk ini bersifat opsional. Permintaan HTTP ini bisa sekecil ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com

Dan Anda akan tetap mendapatkan respon yang valid dari web server

Metode Permintaan

Tiga metode permintaan yang paling umum digunakan adalah:. DAPATKAN, POSTING, dan KEPALA. Anda mungkin sudah terbiasa dengan dua yang pertama, mulai dari menulis formulir html

DAPATKAN. Menerima Dokumen

Ini adalah metode utama yang digunakan untuk menerima html, gambar, JavaScript, CSS, dll. Sebagian besar data yang dimuat di browser Anda diminta menggunakan metode ini

Misalnya, saat memuat artikel Nettuts+, baris pertama permintaan HTTP terlihat seperti ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...

Setelah html dimuat, browser akan mulai mengirimkan permintaan GET untuk gambar, yang mungkin terlihat seperti ini

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_

Formulir web dapat dikonfigurasi untuk menggunakan metode GET. Berikut ini adalah contohnya

<form method="GET" action="foo.php">

First Name: <input type="text" name="first_name" /> <br />
Last Name: <input type="text" name="last_name" /> <br />

<input type="submit" name="action" value="Submit" />

</form>

Saat formulir dikirimkan, permintaan HTTP dimulai seperti ini

GET /foo.php?first_name=John&last_name=Doe&action=Submit HTTP/1.1
...
_

Anda dapat melihat bahwa setiap masukan formulir ditambahkan ke string kueri

POS. Mengirim Data ke Server

Meskipun Anda dapat mengirimkan data ke server menggunakan GET dan string kueri, dalam banyak kasus POST akan lebih baik. Mengirim data dalam jumlah besar menggunakan GET tidak praktis dan memiliki keterbatasan

Permintaan POST adalah yang paling sering dikirim melalui formulir web. Mari ubah contoh formulir sebelumnya menjadi metode POST

<form method="POST" action="foo.php">

First Name: <input type="text" name="first_name" /> <br />
Last Name: <input type="text" name="last_name" /> <br />

<input type="submit" name="action" value="Submit" />

</form>

Mengirimkan formulir membuat permintaan HTTP seperti ini

POST /foo.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost/test.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 43

first_name=John&last_name=Doe&action=Submit
_

Ada tiga hal penting yang perlu diperhatikan di sini

  • Jalur di baris pertama adalah /foo. php dan tidak ada string kueri lagi
  • Header Content-Type dan Content-Lenght telah ditambahkan, yang memberikan informasi tentang data yang dikirim
  • Semua data sekarang dikirim setelah header, dengan format yang sama dengan string kueri

Permintaan metode POST juga dapat dilakukan melalui AJAX, aplikasi, cURL, dll. Dan semua form upload file wajib menggunakan metode POST

KEPALA. Menerima Informasi Header

HEAD identik dengan GET, kecuali server tidak mengembalikan konten dalam respons HTTP. Saat Anda mengirim permintaan HEAD, itu berarti Anda hanya tertarik pada kode respons dan header HTTP, bukan dokumennya

Saat Anda mengirim permintaan HEAD, itu berarti Anda hanya tertarik pada kode respons dan header HTTP, bukan dokumennya

Dengan metode ini browser dapat memeriksa apakah dokumen tersebut telah dimodifikasi, untuk keperluan caching. Juga dapat memeriksa apakah dokumen itu ada

Misalnya, jika Anda memiliki banyak tautan di situs web Anda, Anda dapat mengirim permintaan HEAD secara berkala ke semuanya untuk memeriksa tautan yang rusak. Ini akan bekerja lebih cepat daripada menggunakan GET

Struktur Respons HTTP

Setelah browser mengirimkan permintaan HTTP, server merespons dengan respons HTTP. Tidak termasuk konten, tampilannya seperti ini

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Bagian pertama dari data adalah protokol. Lagi-lagi ini biasanya HTTP/1. x atau HTTP/1. 1 di server modern

Bagian selanjutnya adalah kode status diikuti dengan pesan singkat. Kode 200 berarti permintaan GET kita berhasil dan server akan mengembalikan konten dokumen yang diminta, setelah header

Kita semua pernah melihat halaman "404". Angka ini sebenarnya berasal dari bagian kode status dari respons HTTP. Jika permintaan GET dibuat untuk jalur yang tidak dapat ditemukan oleh server, server akan merespons dengan 404 dari 200

Respons lainnya berisi tajuk seperti permintaan HTTP. Nilai-nilai ini dapat berisi informasi tentang perangkat lunak server, kapan halaman/file terakhir diubah, jenis pantomim, dll

Sekali lagi, sebagian besar tajuk benar-benar opsional

Kode Status HTTP

  • 200 digunakan untuk permintaan yang berhasil
  • 300 untuk pengalihan
  • 400 digunakan jika ada masalah dengan permintaan
  • 500 digunakan jika ada masalah dengan server

200 oke

Seperti disebutkan sebelumnya, ini adalah kode status yang dikirim sebagai tanggapan atas permintaan yang berhasil

206 Konten Sebagian

Jika aplikasi hanya meminta serangkaian file yang diminta, kode 206 dikembalikan

Ini paling sering digunakan dengan pengelola unduhan yang dapat menjeda dan melanjutkan unduhan, atau membagi unduhan menjadi beberapa bagian

404 tidak ditemukan

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Ketika halaman atau file yang diminta tidak ditemukan, respons 404 adalah kode yang dikirimkan oleh server

401 Tidak sah

Halaman web yang dilindungi kata sandi mengirimkan kode ini. Jika Anda tidak memasukkan login dengan benar, Anda akan melihat yang berikut di browser Anda

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Perhatikan bahwa ini hanya berlaku untuk halaman HTTP yang dilindungi kata sandi, yang menampilkan pop-up login seperti ini

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

403 Dilarang

Jika Anda tidak diizinkan mengakses halaman, kode ini dapat dikirim ke browser Anda. Hal ini sering terjadi saat Anda mencoba membuka url untuk folder yang tidak berisi halaman indeks. Jika pengaturan server tidak mengizinkan tampilan isi folder, Anda akan mendapatkan error 403

Misalnya, di server lokal saya membuat folder gambar. Di folder ini saya meletakkan file. htaccess dengan baris ini. "Opsi -Indeks". Sekarang ketika saya mencoba membuka http. //localhost/images/ - Saya melihat ini

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Ada cara lain di mana akses dapat diblokir, dan 403 dapat dikirim. Misalnya, Anda dapat memblokir berdasarkan alamat IP, dengan bantuan beberapa perintah htaccess

order allow,deny
deny from 192.168.44.201
deny from 224.39.163.12
deny from 172.16.7.92
allow from all
_

302 (atau 307) Dipindahkan Sementara & 301 Dipindahkan Secara Permanen

Kedua kode ini digunakan untuk mengarahkan browser. Misalnya, ketika Anda menggunakan layanan pemendek url seperti bit. ly, begitulah cara mereka meneruskan orang yang mengklik tautan mereka

Semua 302 dan 301 ditangani dengan sangat mirip oleh browser, tetapi keduanya dapat memiliki arti yang berbeda dengan spider dari mesin telusur. Misalnya, jika situs web Anda sedang dalam pemeliharaan, Anda dapat mengalihkan ke lokasi lain menggunakan 302. Spider mesin pencari akan terus memeriksa halaman Anda di masa mendatang. Tetapi jika Anda mengarahkan ulang menggunakan 301, itu akan memberi tahu laba-laba bahwa situs web Anda telah dipindahkan ke lokasi permanen. Untuk memberikan ide yang lebih baik. http. // www. nettuts. com dialihkan ke https. //bersih. tutsplus. com/ menggunakan kode 301 bukan 302

500 Internal Server Error

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Kode ini biasanya terlihat saat skrip web rusak. Sebagian besar skrip CGI tidak menampilkan kesalahan langsung ke browser, tidak seperti PHP. Jika terjadi kesalahan fatal, mereka hanya akan mengirimkan kode status 500. Dan pemrogram kemudian perlu mencari log kesalahan server untuk menemukan pesan kesalahan

Daftar Lengkap

Anda dapat menemukan daftar lengkap kode status HTTP dan penjelasannya di sini

Header HTTP dalam Permintaan HTTP

Sekarang, kami akan meninjau beberapa header HTTP paling umum yang ditemukan dalam permintaan HTTP

Hampir semua header ini dapat ditemukan di array $_SERVER di PHP. Anda juga dapat menggunakan fungsi getallheaders() untuk menerima semua header sekaligus

Tuan rumah

Permintaan HTTP dikirim ke Alamat IP tertentu. Tetapi karena sebagian besar server mampu menghosting beberapa situs web dengan IP yang sama, mereka harus mengetahui nama domain mana yang dicari browser

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_0

Ini pada dasarnya adalah nama host, termasuk domain dan subdomain

Di PHP, ini dapat ditemukan sebagai $_SERVER['HTTP_HOST'] atau $_SERVER['SERVER_NAME']

Agen pengguna

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_1

Header ini dapat membawa beberapa informasi seperti

  • Nama dan versi peramban
  • Nama dan versi Sistem Operasi
  • Bahasa bawaan

Ini adalah bagaimana situs dapat mengumpulkan beberapa informasi umum tentang pengunjung ke sistem mereka. Misalnya, mereka dapat mendeteksi jika pengunjung menggunakan browser seluler dan mengarahkan mereka ke versi seluler situs web mereka yang berfungsi lebih baik dengan resolusi lebih rendah

Di PHP, dapat ditemukan dengan. $_SERVER['HTTP_USER_AGENT']

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_2

Terima-Bahasa

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_3

Header ini menampilkan pengaturan bahasa default dari pengguna. Jika sebuah situs web memiliki versi bahasa yang berbeda, itu dapat mengarahkan pengunjung baru berdasarkan data ini

Itu dapat membawa banyak bahasa, dipisahkan dengan koma. Yang pertama adalah bahasa pilihan, dan setiap bahasa terdaftar dapat membawa nilai "q", yang merupakan perkiraan preferensi pengguna untuk bahasa tersebut (berarti. 0 maks. 1)

Dalam PHP, ini dapat ditemukan sebagai. $_SERVER["HTTP_ACCEPT_LANGUAGE"]

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_4

Accept-Encoding

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_5

Sebagian besar browser modern mendukung gzip, dan akan mengirimkannya di header. Server web kemudian dapat mengirim keluaran HTML dalam format terkompresi. Ini dapat mengurangi ukuran hingga 80% untuk menghemat bandwidth dan waktu

Dalam PHP, dapat ditemukan sebagai. $_SERVER["HTTP_ACCEPT_ENCODING"]. Namun, saat Anda menggunakan fungsi callback ob_gzhandler() , fungsi ini akan memeriksa nilai ini secara otomatis, jadi Anda tidak perlu melakukannya

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_6

Jika-Dimodifikasi-Sejak

Jika dokumen web sudah di-cache di browser Anda, dan Anda mengunjunginya lagi, browser Anda dapat memeriksa apakah dokumen tersebut telah diperbarui dengan mengirimkan ini

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_7

Jika belum diubah sejak tanggal tersebut, server akan mengirimkan kode respons "304 Not Modified", dan tidak ada konten - dan browser akan memuat konten dari cache

Dalam PHP, dapat ditemukan sebagai. $_SERVER['HTTP_IF_MODIFIED_SINCE']

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_8

Ada juga header HTTP yang disebut Etag, yang dapat digunakan untuk memastikan bahwa cache saat ini mutakhir. Kami akan membicarakan ini segera

Kue

Seperti namanya, ini mengirimkan cookie yang disimpan di browser Anda untuk domain tersebut

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_9

Ini adalah pasangan nama=nilai yang dipisahkan oleh titik koma. Cookie juga dapat berisi id sesi

Di PHP, masing-masing cookie dapat diakses dengan array $_COOKIE. Anda dapat langsung mengakses variabel sesi menggunakan array $_SESSION, dan jika Anda memerlukan id sesi, Anda dapat menggunakan fungsi session_id() alih-alih cookie

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
0

Perujuk

Seperti namanya, ini adalah header HTTP yang berisi url pengarah

Misalnya, jika saya mengunjungi beranda Nettuts+, dan mengeklik tautan artikel, tajuk ini dikirim ke browser saya

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
1

Di PHP, ini dapat ditemukan sebagai $_SERVER['HTTP_REFERER']

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
2

Anda mungkin memperhatikan kata "referrer" salah eja menjadi "referer". Sayangnya itu dibuat menjadi spesifikasi HTTP resmi dan macet seperti itu

Otorisasi

Saat halaman web meminta otorisasi, browser akan membuka jendela login. Saat Anda memasukkan nama pengguna dan kata sandi di jendela ini, browser mengirimkan permintaan HTTP lain, tetapi kali ini berisi tajuk ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
_3

Data di header disandikan base64. Misalnya, base64_decode('bXl1c2VyOm15cGFzcw==') akan mengembalikan 'pengguna saya. kartu saya'

Di PHP, nilai-nilai ini dapat ditemukan sebagai $_SERVER['PHP_AUTH_USER'] dan $_SERVER['PHP_AUTH_PW']

Lebih lanjut tentang ini ketika kita berbicara tentang tajuk WWW-Authenticate

Header HTTP dalam Respons HTTP

Sekarang kita akan melihat beberapa header HTTP paling umum yang ditemukan dalam respons HTTP

Di PHP, Anda dapat mengatur respon header menggunakan fungsi header(). PHP sudah mengirimkan header tertentu secara otomatis, untuk memuat konten dan pengaturan cookie, dll. Anda dapat melihat header yang dikirim, atau akan dikirim, dengan fungsi headers_list(). Anda dapat memeriksa apakah header telah dikirim, dengan fungsi headers_sent()

Kontrol-Cache

Definisi w3. org. "Bidang header-general Cache-Control digunakan untuk menentukan instruksi yang HARUS diikuti oleh semua mekanisme caching di sepanjang rantai permintaan/respons. " "Mekanisme caching" ini mencakup gateway dan proxy yang mungkin digunakan ISP Anda

Contoh

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
_4

"publik" berarti respons dapat di-cache oleh siapa saja. "max-age" menunjukkan berapa detik cache yang valid untuk itu. Mengizinkan situs web Anda di-cache dapat mengurangi beban dan bandwidth server, dan juga meningkatkan waktu muat di browser

Caching juga dapat dicegah dengan menggunakan direktif "no-cache".

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
5

Untuk info lebih detail, lihat

Jenis konten

Header ini menunjukkan "tipe pantomim" dari dokumen. Browser kemudian memutuskan bagaimana menginterpretasikan konten berdasarkan ini. Misalnya, halaman html (atau skrip PHP dengan keluaran html) dapat mengembalikan ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
6

"teks" adalah tipenya dan "html" adalah subtipe dari dokumen. Header juga dapat berisi lebih banyak info seperti charset

Untuk gambar gif, ini mungkin akan dikirim

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
7

Browser dapat memutuskan untuk menggunakan aplikasi eksternal atau ekstensi browser berdasarkan tipe mime. Misalnya ini akan menyebabkan Adobe Reader dimuat

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
_8

Saat memuat secara langsung, Apache biasanya dapat mendeteksi tipe mime dari dokumen dan mengirimkan header yang sesuai. Juga sebagian besar browser memiliki sejumlah toleransi kesalahan dan deteksi otomatis tipe mime, jika ada header yang salah atau hilang.

Anda dapat menemukan daftar umum jenis pantomim di sini

Di PHP, Anda dapat menggunakan fungsi finfo_file() untuk mendeteksi tipe file mime

Konten-Disposisi

Header ini menginstruksikan browser untuk membuka kotak unduhan file, alih-alih mencoba mengurai konten. Contoh

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
_9

Yang akan menyebabkan browser melakukan ini

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Perhatikan bahwa header Content-Type yang sesuai juga akan dikirim bersama ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
0

Konten-Panjang

Saat konten dikirim ke browser, server dapat menunjukkan ukurannya (dalam byte) menggunakan header ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
1

Ini sangat berguna untuk mengunduh file. Begitulah cara browser dapat menentukan kemajuan pengunduhan

Sebagai contoh, ini adalah skrip dummy yang saya tulis, yang mensimulasikan pengunduhan yang lambat

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
2

Hasilnya adalah

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Sekarang saya akan mengomentari header Content-Length

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
_3

Sekarang hasilnya adalah

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Browser hanya dapat memberi tahu Anda berapa byte yang telah diunduh, tetapi tidak mengetahui jumlah totalnya. Dan bilah progres tidak menunjukkan proses progres

Etag

Ini adalah header yang digunakan untuk tujuan caching. Sepertinya ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
_4

Server web dapat mengirimkan tajuk ini dengan setiap dokumen yang dilayaninya. Nilainya bisa berdasarkan tanggal modifikasi terakhir, ukuran file, atau bahkan nilai checksum dari file tersebut. Browser kemudian menyimpan nilai ini sebagai cache dokumen. Lain kali browser meminta file yang sama, itu akan mengirimkannya dalam permintaan HTTP

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
5

Jika nilai Etag dokumen cocok, server akan mengirimkan kode 304, bukan 200, dan tidak ada konten. Browser akan memuat konten dari cache

Terakhir diubah

Seperti namanya, header ini menunjukkan tanggal terakhir kali modifikasi dokumen, dalam format GMT

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
6
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
7

Ini menawarkan cara lain bagi browser untuk menyimpan dokumen. Browser dapat mengirim ini dalam permintaan HTTP

HTTP/1.x 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 Nov 2009 04:36:25 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: W3 Total Cache/0.8
Pragma: public
Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"
Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
X-Pingback: https://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip
Vary: Accept-Encoding, Cookie, User-Agent

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Top 20+ MySQL Best Practices - Nettuts+</title>
<!-- .. rest of the html .. -->
_7

Kami membicarakan hal ini sebelumnya di bagian "Jika-Dimodifikasi-Sejak".

Lokasi

Header ini digunakan untuk pengalihan. Jika kode responsnya adalah 301 atau 302, server juga harus mengirimkan header ini. Misalnya, ketika Anda pergi ke http. // www. nettuts. com browser Anda akan menerima ini

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
...
_9

Di PHP, Anda bisa mengarahkan pengunjung seperti

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_0

Secara default, yang akan mengirimkan kode respons 302. Jika Anda ingin mengirim 301

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_1

Set-Cookie

Saat situs web ingin menyetel atau memperbarui cookie di browser Anda, ia akan menggunakan tajuk ini

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_2

Setiap cookie dikirim sebagai header terpisah. Perhatikan bahwa cookie yang disetel melalui JavaScript tidak melalui header HTTP

Di PHP, Anda dapat menyetel cookie menggunakan fungsi setcookie(), dan PHP akan mengirimkan header HTTP yang sesuai

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_3

Yang menyebabkan tajuk ini dikirim

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_4

Jika tanggal kedaluwarsa tidak ditentukan, cookie akan dihapus saat jendela browser ditutup

WWW-Otentikasi

Situs web dapat mengirimkan tajuk ini untuk autentikasi pengguna melalui HTTP. Ketika browser melihat tajuk ini, itu akan membuka jendela dialog login

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_5

Yang terlihat seperti ini

Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript
Cara menggunakan set cookie usia maksimum javascript

Ada bagian dalam manual PHP, yang berisi contoh kode tentang cara melakukannya di PHP

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_6

Pengkodean Konten

Header ini biasanya disetel saat konten yang dikembalikan dikompresi

GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
...
_7

Di PHP, jika Anda menggunakan fungsi callback ob_gzhandler(), fungsi ini akan diatur secara otomatis untuk Anda

Kesimpulan

Terima kasih telah membaca. Saya harap artikel ini adalah titik awal yang baik untuk belajar tentang HTTP Header. Silakan tinggalkan komentar dan pertanyaan di bawah, dan saya akan mencoba menjawab sebanyak yang saya bisa