


Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web
Apakah itu Pengepala HTTP
HTTP ditulis oleh "Hypertext Transfer Protocol". Protokol ini digunakan oleh seluruh World Wide Web Hampir kebanyakan kandungan yang anda lihat dalam penyemak imbas dihantar melalui protokol http, seperti artikel ini.
Pengepala HTTP ialah teras permintaan dan respons HTTP Ia membawa maklumat tentang penyemak imbas klien, halaman yang diminta, pelayan, dll.
Contoh
Apabila anda menaip url dalam bar alamat penyemak imbas, penyemak imbas anda akan membuat permintaan http serupa dengan yang berikut: GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1<br>Host: net.tutsplus.com<br>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)<br>Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8<br>Accept-Language: en-us,en;q=0.5<br>Accept-Encoding: gzip,deflate<br>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<br>Keep-Alive: 300<br>Connection: keep-alive<br>Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120<br>Pragma: no-cache<br>Cache-Control: no-cache<br>
Hos: net.tutsplus.com
Ejen Pengguna: 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)
Terima-Pengekodan: gzip,deflate
Terima-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive: 300<font face="NSimsun">HTTP/1.x 200 OK<br>Transfer-Encoding: chunked<br>Date: Sat, 28 Nov 2009 04:36:25 GMT<br>Server: LiteSpeed<br>Connection: close<br>X-Powered-By: W3 Total Cache/0.8<br>Pragma: public<br>Expires: Sat, 28 Nov 2009 05:36:25 GMT<br>Etag: "pub1259380237;gz"<br>Cache-Control: max-age=3600, public<br>Content-Type: text/html; charset=UTF-8<br>Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT<br>X-Pingback: http://net.tutsplus.com/xmlrpc.php<br>Content-Encoding: gzip<br>Vary: Accept-Encoding, Cookie, User-Agent<br><!-- ... rest of the html ... --></font>
Sambungan: keep-alive
Pragma: no-cache
Cache-Control: no-cacheBarisan pertama "Barisan Permintaan" ia menerangkan maklumat asas permintaan, dan selebihnya ialah pengepala HTTP.
Selepas permintaan selesai, penyemak imbas anda mungkin menerima respons HTTP berikut:
Pengekodan Pemindahan: dipotong
Tarikh: Sab, 28 Nov 2009 04:36:25 GMTPelayan: LiteSpeedSambungan : tutupX-Powered-By: W3 Jumlah Cache/0.8Pragma: awamTamat: Sabtu, 28 Nov 2009 05:36:25 GMT
Etag: "pub1259380237;gz"Cache-Control: max-age=3600, publicContent-Type: text/html; charset=UTF-8Terakhir Diubah Suai: Sab, 28 Nov 2009 03:50:37 GMTX -Ping balik: http://net.tutsplus.com/xmlrpc.php
Pelbagai: Terima-Pengekodan, Kuki, Ejen Pengguna Baris pertama dipanggil "Barisan Status", dan selepasnya ialah pengepala http Selepas baris kosong, kandungan mula dikeluarkan (dalam kes ini, beberapa output html).
Tetapi apabila anda melihat kod sumber halaman, anda tidak dapat melihat pengepala HTTP, walaupun ia dihantar ke penyemak imbas bersama-sama dengan perkara yang anda boleh lihat.
Permintaan HTTP ini juga menghantar permintaan untuk menerima beberapa sumber lain, seperti gambar, fail css, fail js, dsb.
Cara melihat Pengepala HTTP
- Pelanjutan FireFox berikut boleh membantu anda menganalisis pengepala HTTP: 1. pepijat api
2.
Pengepala HTTP Langsung
- "kaedah" menunjukkan jenis permintaan ini Jenis permintaan yang paling biasa ialah GET, POST dan HEAD
- "path" mencerminkan laluan selepas hos Contohnya, apabila anda meminta "http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/", laluan akan ". /tutorials/other/top-20-mysql-best-practices/".
- "protokol" mengandungi "HTTP" dan nombor versi, penyemak imbas moden akan menggunakan 1.1.
Setiap baris yang tinggal ialah pasangan "Nama:Nilai". Ia mengandungi pelbagai maklumat tentang permintaan dan penyemak imbas anda. Contohnya, "User-Agent" menunjukkan versi penyemak imbas anda dan sistem pengendalian yang anda gunakan. "Terima-Pengekodan" memberitahu pelayan bahawa penyemak imbas anda boleh menerima output termampat seperti gzip.
Kebanyakan pengepala ini adalah pilihan. Permintaan HTTP malah boleh diperkemaskan untuk kelihatan seperti ini:
<font face="NSimsun">GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1<br>Host: net.tutsplus.com</font>
Dan anda masih akan menerima respons yang sah daripada pelayan.
Jenis Permintaan
Tiga jenis permintaan yang paling biasa ialah: GET, POST dan HEAD Anda mungkin biasa dengan dua yang pertama dari proses menulis HTML.
DAPATKAN: Dapatkan dokumen
Kebanyakan html, imej, js, css, ... yang dihantar ke penyemak imbas diminta melalui kaedah GET. Ia adalah kaedah utama untuk mendapatkan data.
Sebagai contoh, untuk mendapatkan artikel Nettuts, baris pertama permintaan http biasanya kelihatan seperti ini:
<font face="NSimsun">GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1</font>
Setelah html dimuatkan, penyemak imbas akan menghantar permintaan GET untuk mendapatkan imej, seperti ini:
<font face="NSimsun">GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1</font>
Borang juga boleh dihantar melalui kaedah GET Berikut adalah contoh:
<font face="NSimsun"><form action="foo.php" method="GET">
<br>First Name: <input name="first_name" type="text"><br>Last Name: <input name="last_name" type="text"><br><input name="action" type="submit" value="Submit"><br>
</form></font>
Apabila borang ini diserahkan, permintaan HTTP akan kelihatan seperti ini:
<font face="NSimsun">GET /foo.php?first_name=John&last_name=Doe&action=Submit HTTP/1.1<br>...</font>
Anda boleh menghantar input borang ke pelayan dengan melampirkannya pada rentetan pertanyaan.
POS: Hantar data ke pelayan
Walaupun anda boleh menambah data pada URL dan menghantarnya ke pelayan melalui kaedah GET, dalam banyak kes adalah lebih sesuai untuk menggunakan POST untuk menghantar data ke pelayan. Menghantar sejumlah besar data melalui GET adalah tidak realistik dan mempunyai had tertentu.
Adalah amalan biasa untuk menghantar data borang menggunakan permintaan POST. Mari ubah suai contoh di atas untuk menggunakan kaedah POST:
<font face="NSimsun"><form action="foo.php" method="POST">
<br>First Name: <input name="first_name" type="text"><br>Last Name: <input name="last_name" type="text"><br><input name="action" type="submit" value="Submit"><br>
</form></font>
Menyerahkan borang ini akan membuat permintaan HTTP seperti berikut:
<font face="NSimsun">POST /foo.php HTTP/1.1<br>Host: localhost<br>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)<br>Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8<br>Accept-Language: en-us,en;q=0.5<br>Accept-Encoding: gzip,deflate<br>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<br>Keep-Alive: 300<br>Connection: keep-alive<br>Referer: http://localhost/test.php<br>Content-Type: application/x-www-form-urlencoded<br>Content-Length: 43<br>first_name=John&last_name=Doe&action=Submit</font>
Terdapat tiga perkara yang perlu diperhatikan di sini:
- Laluan dalam baris pertama telah ditukar kepada hanya /foo.php , tanpa rentetan pertanyaan.
- Tambahan Jenis Kandungan dan Pengepala Panjang Kandungan, yang menyediakan maklumat yang berkaitan untuk menghantar mesej
- Semua data dihantar selepas pengepala dalam bentuk rentetan pertanyaan.
Permintaan POST juga boleh digunakan pada AJAX, aplikasi, cURL... Dan semua borang muat naik fail dikehendaki menggunakan kaedah POST.
KEPALA: Terima maklumat pengepala
HEAD sangat serupa dengan GET, kecuali HEAD tidak menerima bahagian kandungan respons HTTP. Apabila anda menghantar permintaan HEAD, ini bermakna anda hanya berminat dengan pengepala HTTP, bukan dokumen itu sendiri.
Kaedah ini membolehkan penyemak imbas menentukan sama ada halaman telah diubah suai dan dengan itu mengawal caching. Ia juga boleh menentukan sama ada dokumen yang diminta wujud.
Sebagai contoh, jika terdapat banyak pautan di tapak web anda, maka anda boleh menghantar permintaan HEAD kepada mereka masing-masing untuk menentukan sama ada terdapat pautan mati, yang jauh lebih pantas daripada menggunakan GET.
struktur tindak balas http
Apabila penyemak imbas menghantar permintaan HTTP, pelayan akan membalas permintaan tersebut dengan respons HTTP. Jika anda tidak mengambil berat tentang kandungan, permintaan akan kelihatan seperti ini:
Maklumat berharga pertama ialah perjanjian. Pada masa ini, pelayan akan menggunakan HTTP/1.x atau HTTP/1.1.
Mesej ringkas seterusnya mewakili status. Kod 200 bermakna permintaan kami telah berjaya dihantar, dan pelayan akan mengembalikan dokumen yang kami minta, selepas maklumat pengepala.
Kita semua telah melihat halaman "Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web". Apabila saya meminta laluan yang tidak wujud daripada pelayan, pelayan bertindak balas kepada kami dengan Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web dan bukannya 200.
Selebihnya kandungan respons serupa dengan permintaan HTTP. Ini mengenai perisian pelayan, apabila halaman/fail diubah suai, jenis mime, dsb...
Sekali lagi, pengepala ini adalah pilihan.
Kod status HTTP
- 200 digunakan untuk menunjukkan permintaan yang berjaya
- 300 untuk menunjukkan ubah hala
- 400 digunakan untuk menunjukkan masalah dengan permintaan
- 500 digunakan untuk menunjukkan masalah dengan pelayan.
200 Kejayaan (OK)
Seperti yang dinyatakan sebelum ini, 200 digunakan untuk menunjukkan bahawa permintaan itu berjaya.
206 Kandungan Separa
Jika aplikasi hanya meminta fail dalam julat tertentu, 206 akan dikembalikan.
Ini biasanya digunakan untuk pengurusan muat turun, menyambung semula muat turun atau memuat turun fail dalam ketulan.
Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web Tidak Ditemui
Mudah difahami
Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web Tanpa Kebenaran
Halaman yang dilindungi kata laluan akan mengembalikan status ini. Jika anda tidak memasukkan kata laluan yang betul, anda akan melihat mesej berikut dalam penyemak imbas anda:
Perhatikan bahawa ini hanyalah halaman yang dilindungi kata laluan Kotak pop timbul yang meminta kata laluan kelihatan seperti ini:
403 Dilarang
Jika anda tidak mempunyai kebenaran untuk mengakses halaman, status 403 akan dikembalikan. Ini biasanya berlaku apabila anda cuba membuka folder yang tidak mempunyai halaman indeks. Jika tetapan pelayan tidak membenarkan melihat kandungan direktori, maka anda akan melihat ralat 403.
Beberapa cara lain juga akan menghantar sekatan kebenaran, contohnya anda boleh menyekat melalui alamat IP, yang memerlukan sedikit bantuan daripada htaccess.
<font face="NSimsun">order allow,deny<br>deny from 192.168.44.201<br>deny from 224.39.163.12<br>deny from 172.16.7.92<br>allow from all</font>
302 (atau 307) Dialihkan Sementara dan 301 Dialihkan Secara Kekal
Dua keadaan ini akan muncul apabila penyemak imbas mengubah hala. Contohnya, anda menggunakan perkhidmatan memendekkan URL seperti bit.ly. Beginilah cara mereka belajar siapa yang mengklik pada pautan mereka.
302 dan 301 sangat serupa untuk penyemak imbas, tetapi terdapat beberapa perbezaan untuk perangkak enjin carian. Sebagai contoh, jika tapak web anda sedang diselenggara, maka anda akan mengubah hala pelayar klien ke alamat lain dengan 302. Perangkak enjin carian akan mengindeks semula halaman anda pada masa hadapan. Tetapi jika anda menggunakan ubah hala 301, anda memberitahu perangkak enjin carian bahawa tapak web anda telah dipindahkan secara kekal ke alamat baharu.
500 Ralat Pelayan Dalaman
Kod ini biasanya muncul apabila skrip halaman ranap. Kebanyakan skrip CGI tidak mengeluarkan mesej ralat kepada penyemak imbas seperti PHP. Jika ralat maut berlaku, mereka hanya menghantar kod status 500. Pada masa ini, anda perlu menyemak log ralat pelayan untuk menyelesaikan masalah.
Senarai penuh
Anda boleh mencari penerangan lengkap kod status HTTP di sini .
Permintaan HTTP dalam Pengepala HTTP
Sekarang mari kita lihat beberapa maklumat permintaan HTTP biasa yang terdapat dalam pengepala HTTP.
Semua maklumat pengepala ini boleh didapati dalam tatasusunan $_SERVER PHP. Anda juga boleh menggunakan fungsi getallheaders() untuk mendapatkan semua maklumat pengepala sekaligus.
Hos
Permintaan HTTP akan dihantar ke alamat IP tertentu, tetapi kebanyakan pelayan mempunyai keupayaan untuk mengehoskan berbilang tapak web di bawah alamat IP yang sama, jadi pelayan mesti mengetahui nama domain mana yang diminta oleh penyemak imbas.
<font face="NSimsun">Hos: rlog.cn<code><font face="NSimsun">Host: rlog.cn</font>
Ini hanyalah nama hos asas, termasuk domain dan subdomain.
Dalam PHP, anda boleh melihatnya melalui $_SERVER['HTTP_HOST'] atau $_SERVER['SERVER_NAME'].
Ejen Pengguna
<font face="NSimsun">Ejen Pengguna: 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)<code><font face="NSimsun">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)</font>
Pengepala ini boleh membawa maklumat berikut:
- Nama penyemak imbas dan nombor versi
- Nama sistem pengendalian dan nombor versi
- Bahasa lalai.
Ini ialah kaedah biasa yang digunakan sesetengah tapak web untuk mengumpul maklumat pelawat. Sebagai contoh, anda boleh menentukan sama ada pelawat mengakses tapak anda daripada telefon mudah alih dan memutuskan sama ada untuk mengarahkan mereka ke tapak mudah alih yang berprestasi baik pada peleraian yang lebih rendah.
Dalam PHP, anda boleh mendapatkan Ejen Pengguna melalui $_SERVER['HTTP_USER_AGENT']
<font face="NSimsun">if ( strstr($_SERVER['HTTP_USER_AGENT'],'MSIE 6') ) {<br>gema "Sila berhenti menggunakan IE6!";<br> }<code><font face="NSimsun">if ( strstr($_SERVER['HTTP_USER_AGENT'],'MSIE 6') ) {<br>echo "Please stop using IE6!";<br>}</font>
Bahasa Terima
<font face="NSimsun">Bahasa Terima: en-us,en;q=0.5<code><font face="NSimsun">Accept-Language: en-us,en;q=0.5</font>
Maklumat ini menerangkan tetapan bahasa lalai pengguna. Jika tapak web mempunyai versi bahasa yang berbeza, maka maklumat ini boleh digunakan untuk mengubah hala pelayar pengguna.
Ia boleh membawa berbilang bahasa dengan pemisahan koma. Yang pertama akan menjadi bahasa pilihan, dan bahasa lain akan membawa nilai "q" untuk menunjukkan keutamaan pengguna untuk bahasa tersebut (0~1).
Gunakan $_SERVER["HTTP_ACCEPT_LANGUAGE"] dalam PHP untuk mendapatkan maklumat ini.
<font face="NSimsun">if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') {<br>header('Lokasi: http:// french.mydomain.com');<br>}<code><font face="NSimsun">if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') {<br>header('Location: http://french.mydomain.com');<br>}</font>
Terima-Pengekodan
<font face="NSimsun">Terima-Pengekodan: gzip, kempis<code><font face="NSimsun">Accept-Encoding: gzip,deflate</font>
Kebanyakan penyemak imbas moden menyokong pemampatan gzip dan akan melaporkan maklumat ini kepada pelayan. Pada masa ini, pelayan akan menghantar HTML termampat ke penyemak imbas. Ini boleh mengurangkan saiz fail hampir 80% untuk menjimatkan masa muat turun dan lebar jalur.
Dalam PHP anda boleh menggunakan $_SERVER["HTTP_ACCEPT_ENCODING"] untuk mendapatkan maklumat ini. Kemudian memanggil kaedah ob_gzhandler() akan mengesan nilai ini secara automatik, jadi anda tidak perlu mengesannya secara manual.
<font face="NSimsun">// mendayakan penimbalan output<br>// dan semua output dimampatkan jika penyemak imbas menyokongnya<br>ob_start('ob_gzhandler');<code><font face="NSimsun">// enables output buffering<br>// and all output is compressed if the browser supports it<br>ob_start('ob_gzhandler');</font>
Jika-Diubahsuai-Sejak
Jika halaman telah dicache dalam penyemak imbas anda, maka pada kali seterusnya anda menyemak imbas penyemak imbas akan mengesan sama ada dokumen itu telah diubah suai, maka ia akan menghantar pengepala sedemikian:
<font face="NSimsun">If-Modified-Sejak: Sab, 28 Nov 2009 06:38:19 GMT<code><font face="NSimsun">If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT</font>
Jika ia tidak diubah suai sejak masa ini, pelayan akan mengembalikan "304 Not Modified" dan tiada lagi kandungan akan dikembalikan. Penyemak imbas akan membaca kandungan secara automatik daripada cache
Dalam PHP, anda boleh menggunakan $_SERVER['HTTP_IF_MODIFIED_SINCE'] untuk mengesan.
<font face="NSimsun">// andaikan $last_modify_time ialah output terakhir dikemas kini<br>// adakah penyemak imbas menghantar pengepala If-Modified-Since?<br>if(isset ($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {<br>// jika cache penyemak imbas sepadan dengan masa ubah suai<br>if ($last_modify_time == strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {<br>// hantar pengepala 304 dan tiada kandungan<br>header("HTTP/1.1 304 Not Modified");<br>keluar;<br>}<br>}<code><font face="NSimsun">// assume $last_modify_time was the last the output was updated<br>// did the browser send If-Modified-Since header?<br>if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {<br>// if the browser cache matches the modify time<br>if ($last_modify_time == strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {<br>// send a 304 header, and no content<br>header("HTTP/1.1 304 Not Modified");<br>exit;<br>}<br>}</font>
Terdapat juga pengepala HTTP yang dipanggil Etag, yang digunakan untuk menentukan sama ada maklumat yang dicache adalah betul Kami akan menerangkannya kemudian.
Kuki
Seperti namanya, ia akan menghantar maklumat kuki yang disimpan dalam penyemak imbas anda ke pelayan.
<font face="NSimsun">Kuki: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120<code><font face="NSimsun">Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar</font>
Ia ialah satu set pasangan nilai nama yang dipisahkan oleh koma bertitik. Kuki juga boleh mengandungi id sesi.
Dalam PHP, kuki tunggal boleh diperolehi dengan mengakses tatasusunan $_COOKIE. Anda boleh terus menggunakan tatasusunan $_SESSION untuk mendapatkan pembolehubah sesi. Jika anda memerlukan id sesi, maka anda boleh menggunakan fungsi session_id() dan bukannya kuki.
<font face="NSimsun">echo $_COOKIE['foo'];<br>// output: bar<br>echo $_COOKIE['PHPSESSID'];<br>// output: r2t5uvjq435r4q7ib3vtdjq120<br>session_start();<br>echo session_id();<br>// output: r2t5uvjq435r4q7ib3vtdjq120</font>
Perujuk
Seperti namanya, pengepala akan mengandungi maklumat url rujukan.
Sebagai contoh, jika saya melawati halaman utama Nettuts dan mengklik pada pautan, maklumat pengepala ini akan dihantar ke penyemak imbas: <font face="NSimsun">Referer: http://net.tutsplus.com/ </font>
Dalam PHP, nilai ini boleh diperolehi melalui $_SERVER['HTTP_REFERER'].
<font face="NSimsun">if (isset($_SERVER['HTTP_REFERER'])) {<code><font face="NSimsun">if (isset($_SERVER['HTTP_REFERER'])) {<br>$url_info = parse_url($_SERVER['HTTP_REFERER']);<br>// is the surfer coming from Google?<br>if ($url_info['host'] == 'www.google.com') {<br>parse_str($url_info['query'], $vars);<br>echo "You searched on Google for this keyword: ". $vars['q'];<br>}<br>}<br>// if the referring url was:<br>// http://www.google.com/search?source=ig&hl=en&rlz=&=&q=http headers&aq=f&oq=&aqi=g-p1g9<br>// the output will be:<br>// You searched on Google for this keyword: http headers</font>
$url_info = parse_url($_SERVER['HTTP_REFERER']);
if ($url_info['host'] == 'www.google.com') {
parse_str($url_info['query'], $vars);echo "Anda mencari di Google untuk kata kunci ini: " $vars['q'];
}}
// jika url yang dirujuk ialah:// http://www. google.com/search?source=ig&hl=ms&rlz=&=&q=http headers&aq=f&oq=&aqi=g-p1g9<font face="NSimsun">Authorization: Basic bXl1c2VyOm15cGFzcw==</font>
// outputnya ialah:
Anda mungkin perasan perkataan “perujuk” salah eja sebagai “perujuk”.
KeizinanApabila halaman memerlukan kebenaran, penyemak imbas akan muncul tetingkap log masuk Selepas memasukkan nombor akaun yang betul, penyemak imbas akan menghantar permintaan HTTP, tetapi kali ini ia akan menyertakan pengepala seperti itu:
Bahagian maklumat yang terkandung dalam pengepala ini dikodkan base64. Sebagai contoh, base64_decode('bXl1c2VyOm15cGFzcw==') akan ditukar kepada 'myuser:mypass'. Dalam PHP, nilai ini boleh diperoleh menggunakan $_SERVER['PHP_AUTH_USER'] dan $_SERVER['PHP_AUTH_PW']. Kami akan menerangkan butiran lanjut dalam bahagian WWW-Authenticate. Respons HTTP dalam Pengepala HTTP Sekarang izinkan saya memahami maklumat respons HTTP dalam beberapa Pengepala HTTP biasa. Dalam PHP, anda boleh menetapkan maklumat respons pengepala melalui header()
. PHP telah menghantar beberapa maklumat pengepala yang diperlukan secara automatik, seperti kandungan yang dimuatkan, menetapkan kuki, dll... Anda boleh melihat perkara yang telah dihantar dan perkara yang akan dihantar melalui
senarai_headers()
maklumat pengepala fungsi. Anda juga boleh menggunakan fungsi
headers_sent()<font face="NSimsun">Cache-Control: max-age=3600, public</font>
Kawalan Cache
Takrifan w3.org ialah: "Medan pengepala umum Cache-Control digunakan untuk menentukan arahan yang MESTI dipatuhi oleh semua mekanisme caching sepanjang rantaian permintaan/tindak balas dengan "mekanisme caching" termasuk beberapa perkara yang anda ISP mungkin Gateway dan maklumat proksi akan digunakan.
<font face="NSimsun">Cache-Control: no-cache </font>
Contohnya:
<font face="NSimsun">Cache-Control: max-age=3600, public<a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.w3.org');" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9" target="_blank"></a></font>
"Awam" bermaksud bahawa respons ini boleh dicache oleh sesiapa sahaja dan "umur maksimum" menunjukkan bilangan saat bahawa cache akan sah. Membenarkan tapak web anda dicache sangat mengurangkan masa muat turun dan lebar jalur, di samping meningkatkan kelajuan pemuatan penyemak imbas.
<font face="NSimsun">Kawalan Cache: tanpa cache <p></p></font>
Untuk butiran lanjut, sila lawati <font face="NSimsun">Content-Type: text/html; charset=UTF-8</font>
. Jenis Kandungan
Pengepala ini mengandungi "jenis mime" dokumen. Penyemak imbas akan menggunakan parameter ini untuk memutuskan cara menghuraikan dokumen. Sebagai contoh, halaman html (atau halaman php dengan output html) akan mengembalikan sesuatu seperti ini:
<font face="NSimsun">Content-Type: text/html; charset=UTF-8<span></span></font>
‘teks’ ialah jenis dokumen dan ‘html’ ialah subjenis dokumen. Pengepala ini juga termasuk lebih banyak maklumat, seperti charset. <font face="NSimsun">Content-Type: image/gif</font>
Jika ia adalah imej, respons ini akan dihantar:
<font face="NSimsun">Content-Type: image/gif</font>
Pelayar boleh menggunakan jenis mime untuk memutuskan sama ada untuk menggunakan program luaran atau sambungannya sendiri untuk membuka dokumen. Contoh berikut memanggil Adobe Reader: <font face="NSimsun">Content-Type: application/pdf</font>
Muat terus, Apache biasanya secara automatik menentukan jenis mime dokumen dan menambah maklumat yang sesuai pada pengepala. Dan kebanyakan penyemak imbas mempunyai tahap toleransi kesalahan tertentu Mereka akan mengesan jenis mime secara automatik apabila maklumat tidak diberikan dalam pengepala atau tidak diberikan dengan betul.
Anda boleh menemui senarai jenis mime yang biasa digunakan di sini.
Dalam PHP anda boleh menggunakan finfo_file() untuk mengesan jenis ime fail.
Pelupusan Kandungan
Pengepala ini akan memberitahu penyemak imbas untuk membuka tetingkap muat turun fail dan bukannya cuba menghuraikan kandungan respons. Contohnya:
<font face="NSimsun">Content-Disposition: attachment; filename="download.zip"<code><font face="NSimsun">Content-Disposition: attachment; filename="download.zip"</font>
Ia akan menyebabkan penyemak imbas memaparkan kotak dialog seperti ini:
Perhatikan bahawa pengepala Jenis Kandungan yang sesuai juga akan dihantar
<font face="NSimsun">Content-Type: application/zip<br>Content-Disposition: attachment; filename="download.zip"<code><font face="NSimsun">Content-Type: application/zip<br>Content-Disposition: attachment; filename="download.zip"</font>
Panjang Kandungan
Apabila kandungan hendak dihantar ke penyemak imbas, pelayan boleh menggunakan pengepala ini untuk memaklumkan penyemak imbas saiz (bait) fail yang akan dihantar.
<font face="NSimsun">Panjang Kandungan: 89123<code><font face="NSimsun">Content-Length: 89123</font>
Maklumat ini agak berguna untuk memuat turun fail. Itulah sebabnya penyemak imbas mengetahui kemajuan muat turun.
Sebagai contoh, di sini saya menulis skrip tiruan untuk mensimulasikan muat turun perlahan.
<font face="NSimsun">// ia ialah fail zip<br>header('Content-Type: application/zip');<br>// 1 juta bait (kira-kira 1megabait) <br>header('Content-Length: 1000000');<br>// memuatkan dialog muat turun dan simpan sebagai download.zip<br>header('Content-Disposition: attachment; filename="download .zip"');<br>// 1000 kali 1000 bait data<br>untuk ($i = 0; $i <span style="WHITE- SPACE: pra"><code><font face="NSimsun">// it's a zip file<br>header('Content-Type: application/zip');<br>// 1 million bytes (about 1megabyte)<br>header('Content-Length: 1000000');<br>// load a download dialogue, and save it as download.zip<br>header('Content-Disposition: attachment; filename="download.zip"');<br>// 1000 times 1000 bytes of data<br>for ($i = 0; $i <span style="WHITE-SPACE: pre"></span>echo str_repeat(".",1000);<br><span style="WHITE-SPACE: pre"></span>// sleep to slow down the download<br><span style="WHITE-SPACE: pre"></span>usleep(50000);<br>}</font>
echo str_repeat(".",1000);
usleep(50000);
}
Hasilnya adalah seperti ini:
<font face="NSimsun">// it's a zip file<br>header('Content-Type: application/zip');<br>// the browser won't know the size<br>// header('Content-Length: 1000000');<br>// load a download dialogue, and save it as download.zip<br>header('Content-Disposition: attachment; filename="download.zip"');<br>// 1000 times 1000 bytes of data<br>for ($i = 0; $i <span style="WHITE-SPACE: pre"></span>echo str_repeat(".",1000);<br><span style="WHITE-SPACE: pre"></span>// sleep to slow down the download<br><span style="WHITE-SPACE: pre"></span>usleep(50000);<br>}</font>
Kini saya mengulas tajuk Panjang Kandungan:
<font face="NSimsun">// ia adalah fail zip<br>header('Content-Type: application/zip');<br>// penyemak imbas tidak akan mengetahui size<br>// header('Content-Length: 1000000');<br>// memuatkan dialog muat turun dan simpan sebagai download.zip<br>header('Content-Disposition: attachment; nama fail ="download.zip"');<br>// 1000 kali 1000 bait data<br>untuk ($i = 0; $i <span style="WHITE-SPACE: pra"></span></font>
// tidur untuk memperlahankan muat turun
/>usleep(50000);
}
Hasilnya menjadi begini:
Pelayar ini hanya akan memberitahu anda jumlah yang telah dimuat turun, tetapi bukan jumlah yang perlu dimuat turun secara keseluruhan. Dan bar kemajuan tidak akan menunjukkan kemajuan. <font face="NSimsun">Etag: "pub1259380237;gz"</font>
Ini adalah satu lagi pengepala yang dijana untuk caching. Ia akan kelihatan seperti ini:
<font face="NSimsun">Etag: "pub1259380237;gz"</font>
<font face="NSimsun">If-None-Match: "pub1259380237;gz"</font>
<font face="NSimsun">If-None-Match: "pub1259380237;gz"<p></p></font>
Jika nilai Etag dokumen yang diminta konsisten dengannya, pelayan akan menghantar kod status 304 dan bukannya 2oo. dan tidak mengembalikan kandungan. Penyemak imbas kini akan memuatkan fail daripada cache. <font face="NSimsun">Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT</font>
<font face="NSimsun">$modify_time = filemtime($file);<br>header("Last-Modified: " . gmdate("D, d M Y H:i:s", $modify_time) . " GMT");</font>
Seperti namanya, maklumat pengepala ini menunjukkan masa pengubahsuaian terakhir dokumen dalam format GMT:
<font face="NSimsun">Terakhir Diubah Suai: Sab, 28 Nov 2009 03:50:37 GMT</font>
<font face="NSimsun">$modify_time = filemtime($file);<br>header("Terakhir Diubah Suai: " . gmdate("D, d M Y H:i:s", $ modify_time) . " GMT");</font>
Ia menyediakan mekanisme caching alternatif. Penyemak imbas mungkin menghantar permintaan seperti ini: <font face="NSimsun">If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT</font>
Wir haben dies bereits im Abschnitt „If-Modified-Since“ besprochen.
Standort
Dieser Header wird für die Umleitung verwendet. Wenn der Antwortcode 301 oder 302 ist, muss der Server diesen Header senden. Wenn Sie beispielsweise http://www.nettuts.com besuchen, erhält Ihr Browser die folgende Antwort:
<font face="NSimsun">HTTP/1.x 301 Moved Permanently<br>...<br>Location: http://net.tutsplus.com/<br>...</font>
In PHP können Sie Besucher auf diese Weise umleiten: <font face="NSimsun">header('Location: http://net.tutsplus.com/');</font>
Standardmäßig wird der Statuscode 302 gesendet. Wenn Sie 301 senden möchten, schreiben Sie einfach so:
<font face="NSimsun">header('Location: http://net.tutsplus.com/', true, 301);</font>
Cookie setzen
Wenn eine Website Cookie-Informationen für Ihr Surfen festlegen oder aktualisieren muss, verwendet sie einen Header wie diesen:
<font face="NSimsun">Set-Cookie: skin=noskin; path=/; läuft ab=Sonntag, 29.11.2009 21:42:28 GMT<code><font face="NSimsun">Set-Cookie: skin=noskin; path=/; domain=.amazon.com; expires=Sun, 29-Nov-2009 21:42:28 GMT<br>Set-Cookie: session-id=120-7333518-8165026; path=/; domain=.amazon.com; expires=Sat Feb 27 08:00:00 2010 GMT</font>
Set-Cookie: session-id=120-7333518-8165026; path=/; domain=.amazon.com; läuft ab=Sa. 27. Februar 2010 08:00:00 GMT
Jedes Cookie wird als separate Header-Information verwendet. Beachten Sie, dass das Setzen von Cookies über js nicht im HTTP-Header widergespiegelt wird.
In PHP können Sie Cookies über die Funktion setcookie()
setzen, und PHP sendet die entsprechenden HTTP-Header.
<font face="NSimsun">setcookie("TestCookie", "foobar");</font>
<font face="NSimsun">setcookie("TestCookie", "foobar");</font>
Es werden Header-Informationen wie diese gesendet:
<font face="NSimsun">Set-Cookie: TestCookie=foobar</font>
<font face="NSimsun">Set-Cookie: TestCookie=foobar</font>
Wenn keine Ablaufzeit angegeben ist, wird das Cookie nach dem Schließen des Browsers gelöscht.
WWW-Authentifizieren
Eine Website kann diesen Header über HTTP senden, um den Benutzer zu authentifizieren. Wenn der Browser diese Antwort im Header sieht, öffnet er ein Popup-Fenster.
<font face="NSimsun">WWW-Authenticate: Basic realm="Restricted Area"</font>
<font face="NSimsun">WWW-Authenticate: Basic realm="Restricted Area"</font>
Es wird so aussehen:
<font face="NSimsun">if (!isset($_SERVER['PHP_AUTH_USER'])) {<br>header('WWW-Authenticate: Basic realm="My Realm"');<br>header('HTTP/1.0 Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web Unauthorized');<br>echo 'Text to send if user hits Cancel button';<br>exit;<br>} else {<br>echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";<br>echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";<br>}</font>
<font face="NSimsun">if (!isset($_SERVER['PHP_AUTH_USER'])) {</font>
header('HTTP/1.0 Fahami semua aspek Gambar Pengepala HTTP dan penerangan teks_HTML/Xhtml_Pengeluaran halaman web Unauthorized');
echo 'Text zum Senden, wenn der Benutzer auf die Schaltfläche Abbrechen klickt';exit;
} else {echo "
Hallo { $_SERVER['PHP_AUTH_USER']}.
";<font face="NSimsun">Content-Encoding: gzip</font>
echo "Sie haben {$_SERVER['PHP_AUTH_PW']} als Ihr Passwort eingegeben.
"; }Inhaltskodierung Dieser Header wird normalerweise gesetzt, wenn der zurückgegebene Inhalt komprimiert wird.
<font face="NSimsun">Inhaltskodierung: gzip</font>
Wenn Sie in PHP die Funktion
ob_gzhandler() aufrufen, wird dieser Header automatisch gesetzt.
Ursprüngliche Adresse: http://css9.net/all-about-http-headers/
Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kod status HTTP 520 bermakna pelayan mengalami ralat yang tidak diketahui semasa memproses permintaan dan tidak dapat memberikan maklumat yang lebih khusus. Digunakan untuk menunjukkan bahawa ralat tidak diketahui berlaku semasa pelayan memproses permintaan, yang mungkin disebabkan oleh masalah konfigurasi pelayan, masalah rangkaian atau sebab lain yang tidak diketahui. Ini biasanya disebabkan oleh isu konfigurasi pelayan, isu rangkaian, kelebihan beban pelayan atau ralat pengekodan. Jika anda menghadapi ralat kod status 520, sebaiknya hubungi pentadbir tapak web atau pasukan sokongan teknikal untuk mendapatkan maklumat dan bantuan lanjut.

Kod status HTTP 403 bermakna pelayan menolak permintaan pelanggan. Penyelesaian kepada kod status http 403 ialah: 1. Semak kelayakan pengesahan Jika pelayan memerlukan pengesahan, pastikan kelayakan yang betul disediakan 2. Semak sekatan alamat IP, pastikan bahawa alamat IP klien adalah disenarai putih atau tidak disenaraihitamkan 3. Semak tetapan kebenaran fail Jika kod status 403 berkaitan dengan tetapan kebenaran fail atau direktori, pastikan klien mempunyai kebenaran yang mencukupi untuk mengakses fail atau direktori ini. dll.

Kuasai maksud kod status HTTP 301: Senario aplikasi biasa pengalihan halaman web Dengan perkembangan pesat Internet, keperluan orang ramai untuk interaksi halaman web menjadi lebih tinggi dan lebih tinggi. Dalam bidang reka bentuk web, pengalihan halaman web adalah teknologi biasa dan penting, dilaksanakan melalui kod status HTTP 301. Artikel ini akan meneroka maksud kod status HTTP 301 dan senario aplikasi biasa dalam pengalihan halaman web. Kod status HTTP301 merujuk kepada ubah hala kekal (PermanentRedirect). Apabila pelayan menerima pelanggan

Cara menggunakan NginxProxyManager untuk melaksanakan lompatan automatik dari HTTP ke HTTPS Dengan perkembangan Internet, semakin banyak laman web mula menggunakan protokol HTTPS untuk menyulitkan penghantaran data untuk meningkatkan keselamatan data dan perlindungan privasi pengguna. Memandangkan protokol HTTPS memerlukan sokongan sijil SSL, sokongan teknikal tertentu diperlukan semasa menggunakan protokol HTTPS. Nginx ialah pelayan HTTP yang berkuasa dan biasa digunakan dan pelayan proksi terbalik, dan NginxProxy

Gunakan fungsi http.PostForm untuk menghantar permintaan POST dengan data borang Dalam pakej http bahasa Go, anda boleh menggunakan fungsi http.PostForm untuk menghantar permintaan POST dengan data borang. Prototaip fungsi http.PostForm adalah seperti berikut: funcPostForm(urlstring,dataurl.Values)(resp*http.Response,errerror)di mana, u

Aplikasi Pantas: Analisis Kes Pembangunan Praktikal PHP Asynchronous HTTP Muat Turun Berbilang Fail Dengan pembangunan Internet, fungsi muat turun fail telah menjadi salah satu keperluan asas bagi banyak laman web dan aplikasi. Untuk senario di mana berbilang fail perlu dimuat turun pada masa yang sama, kaedah muat turun segerak tradisional selalunya tidak cekap dan memakan masa. Atas sebab ini, menggunakan PHP untuk memuat turun berbilang fail secara tidak segerak melalui HTTP telah menjadi penyelesaian yang semakin biasa. Artikel ini akan menganalisis secara terperinci cara menggunakan HTTP tak segerak PHP melalui kes pembangunan sebenar.

Masalah dan penyelesaian komunikasi rangkaian dan keselamatan biasa dalam C# Dalam era Internet hari ini, komunikasi rangkaian telah menjadi bahagian yang sangat diperlukan dalam pembangunan perisian. Dalam C#, kami biasanya menghadapi beberapa masalah komunikasi rangkaian, seperti keselamatan penghantaran data, kestabilan sambungan rangkaian, dsb. Artikel ini akan membincangkan secara terperinci komunikasi rangkaian biasa dan isu keselamatan dalam C# dan menyediakan penyelesaian yang sepadan serta contoh kod. 1. Masalah komunikasi rangkaian Gangguan sambungan rangkaian: Semasa proses komunikasi rangkaian, sambungan rangkaian mungkin terganggu, yang boleh menyebabkan

Kod Status HTTP 200: Terokai Maksud dan Tujuan Respons yang Berjaya Kod status HTTP ialah kod angka yang digunakan untuk menunjukkan status respons pelayan. Antaranya, kod status 200 menunjukkan bahawa permintaan telah berjaya diproses oleh pelayan. Artikel ini akan meneroka maksud khusus dan penggunaan kod status HTTP 200. Mula-mula, mari kita fahami klasifikasi kod status HTTP. Kod status terbahagi kepada lima kategori iaitu 1xx, 2xx, 3xx, 4xx dan 5xx. Antaranya, 2xx menunjukkan tindak balas yang berjaya. Dan 200 ialah kod status yang paling biasa dalam 2xx
