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 Show 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. ContohSaat 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 HeaderSaya menggunakan ekstensi Firefox berikut untuk menganalisis header HTTP
Di PHP
Lebih lanjut pada artikel ini, kita akan melihat beberapa contoh kode di PHP Struktur Permintaan HTTPBaris pertama permintaan HTTP disebut baris permintaan dan terdiri dari 3 bagian
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 PermintaanTiga 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 DokumenIni 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 ServerMeskipun 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
Permintaan metode POST juga dapat dilakukan melalui AJAX, aplikasi, cURL, dll. Dan semua form upload file wajib menggunakan metode POST KEPALA. Menerima Informasi HeaderHEAD 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
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 HTTPSetelah browser mengirimkan permintaan HTTP, server merespons dengan respons HTTP. Tidak termasuk konten, tampilannya seperti ini 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 okeSeperti disebutkan sebelumnya, ini adalah kode status yang dikirim sebagai tanggapan atas permintaan yang berhasil 206 Konten SebagianJika 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 ditemukanKetika halaman atau file yang diminta tidak ditemukan, respons 404 adalah kode yang dikirimkan oleh server 401 Tidak sahHalaman web yang dilindungi kata sandi mengirimkan kode ini. Jika Anda tidak memasukkan login dengan benar, Anda akan melihat yang berikut di browser Anda Perhatikan bahwa ini hanya berlaku untuk halaman HTTP yang dilindungi kata sandi, yang menampilkan pop-up login seperti ini 403 DilarangJika 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 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 PermanenKedua 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 ErrorKode 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 LengkapAnda dapat menemukan daftar lengkap kode status HTTP dan penjelasannya di sini Header HTTP dalam Permintaan HTTPSekarang, 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 rumahPermintaan 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 penggunaHTTP/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
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-BahasaHTTP/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-EncodingHTTP/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-SejakJika 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 KueSeperti 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.com0 PerujukSeperti 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.com1 Di PHP, ini dapat ditemukan sebagai $_SERVER['HTTP_REFERER'] GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1 Host: net.tutsplus.com2 Anda mungkin memperhatikan kata "referrer" salah eja menjadi "referer". Sayangnya itu dibuat menjadi spesifikasi HTTP resmi dan macet seperti itu OtorisasiSaat 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 HTTPSekarang 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-CacheDefinisi 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.com5 Untuk info lebih detail, lihat Jenis kontenHeader 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.com6 "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.com7 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-DisposisiHeader 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 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-PanjangSaat 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 Sekarang saya akan mengomentari header Content-Length GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1 ..._3 Sekarang hasilnya adalah Browser hanya dapat memberi tahu Anda berapa byte yang telah diunduh, tetapi tidak mengetahui jumlah totalnya. Dan bilah progres tidak menunjukkan proses progres EtagIni 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 diubahSeperti 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". LokasiHeader 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-CookieSaat 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-OtentikasiSitus 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 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 KontenHeader 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 KesimpulanTerima 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 |