Protokol pemindahan hiperteks ialah HTTP. xx: Mesej kejayaan

HTTP ialah protokol untuk memindahkan hiperteks antara sistem yang diedarkan. Pada asasnya, http ialah elemen asas Web moden. Sebagai pembangun web yang menghargai diri sendiri, kita harus mengetahui sebanyak mungkin mengenainya.

Mari kita lihat protokol ini melalui lensa profesion kita. Pada bahagian pertama, kami akan membincangkan perkara asas dan melihat permintaan/tindak balas. Dalam artikel seterusnya kita akan melihat ciri yang lebih terperinci, seperti caching, pemprosesan sambungan dan pengesahan.

Juga dalam artikel ini saya akan merujuk terutamanya kepada standard RFC 2616: Protokol Pemindahan Hiperteks -- HTTP/1.1.

Asas HTTP

HTTP membolehkan komunikasi antara berbilang hos dan pelanggan, dan menyokong rangkaian tetapan rangkaian.

Pada asasnya, TCP/IP digunakan untuk komunikasi, tetapi ini bukan satu-satunya pilihan yang mungkin. Secara lalai, TCP/IP menggunakan port 80, tetapi yang lain boleh digunakan.

Komunikasi antara hos dan pelanggan berlaku dalam dua peringkat: permintaan dan tindak balas. Pelanggan menjana permintaan HTTP, sebagai tindak balas yang pelayan memberikan respons (mesej). Tidak lama kemudian, kita akan melihat skema kerja ini dengan lebih terperinci.

Versi semasa protokol HTTP ialah 1.1, di mana beberapa ciri baharu telah diperkenalkan. Pada pendapat saya, yang paling penting daripada mereka ialah: sokongan untuk sambungan yang sentiasa terbuka, mekanisme pemindahan data baharu pengekodan pemindahan chunked, pengepala baharu untuk caching. Kami akan melihat beberapa perkara ini dalam bahagian kedua artikel ini.

URL

Teras komunikasi web ialah permintaan, yang dihantar melalui Uniform Resource Locator (URL). Saya pasti anda sudah tahu apa itu URL, tetapi demi kesempurnaan, saya memutuskan untuk mengatakan beberapa perkataan. Struktur URL adalah sangat mudah dan terdiri daripada komponen berikut:

Protokol boleh sama ada http untuk sambungan biasa atau https untuk lebih lanjut pertukaran selamat data. Port lalai ialah 80. Ini diikuti dengan laluan ke sumber pada pelayan dan rangkaian parameter.

Kaedah

Menggunakan URL, kami mentakrifkan nama sebenar hos yang ingin kami berkomunikasi, tetapi tindakan yang perlu kami lakukan hanya boleh dikomunikasikan menggunakan kaedah HTTP. Sudah tentu, terdapat beberapa jenis tindakan yang boleh kita lakukan. HTTP melaksanakan yang paling diperlukan, sesuai untuk keperluan kebanyakan aplikasi.

Kaedah sedia ada:

DAPATKAN: Akses sumber sedia ada. URL menyenaraikan semua maklumat yang diperlukan supaya pelayan boleh mencari dan mengembalikan sumber yang diminta sebagai respons.

POS: Digunakan untuk mencipta sumber baharu. Permintaan POST biasanya mengandungi semua maklumat yang diperlukan untuk mencipta sumber baharu.

LETAK: kemas kini sumber semasa. Permintaan PUT mengandungi data yang akan dikemas kini.

PADAM: Digunakan untuk memadam sumber sedia ada.

Kaedah ini adalah yang paling popular dan paling kerap digunakan oleh pelbagai alat dan rangka kerja. Dalam sesetengah kes, permintaan PUT dan DELETE dihantar melalui menghantar POS, kandungan yang menunjukkan tindakan yang perlu dilakukan dengan sumber: buat, kemas kini atau padam.

HTTP juga menyokong kaedah lain:

KEPALA: Sama seperti GET. Perbezaannya ialah dengan permintaan jenis ini tiada mesej dihantar. Pelayan hanya menerima pengepala. Digunakan, sebagai contoh, untuk menentukan sama ada sumber telah diubah suai.

JEJAK: semasa penghantaran, permintaan itu melalui banyak titik akses dan pelayan proksi, setiap satunya memasukkan maklumatnya sendiri: IP, DNS. Menggunakan kaedah ini, anda boleh melihat semua maklumat perantaraan.

PILIHAN: Digunakan untuk menentukan keupayaan pelayan, tetapan dan konfigurasi untuk sumber tertentu.

Kod status

Sebagai tindak balas kepada permintaan daripada pelanggan, pelayan menghantar respons, yang juga mengandungi kod status. Kod ini membawa maksud yang istimewa supaya klien dapat memahami dengan lebih jelas cara mentafsir jawapan:

1xx: Mesej maklumat

Satu set kod ini telah diperkenalkan dalam HTTP/1.1. Pelayan boleh menghantar permintaan borang: Jangkakan: 100-sambung, yang bermaksud bahawa pelanggan masih menghantar permintaan yang lain. Pelanggan yang menjalankan HTTP/1.0 mengabaikan pengepala ini.

2xx: Mesej kejayaan

Jika pelanggan menerima kod daripada siri 2xx, maka permintaan itu berjaya dihantar. Pilihan yang paling biasa ialah 200 OK. Dengan permintaan GET, pelayan menghantar respons dalam badan mesej. Terdapat juga jawapan lain yang mungkin:

  • 202 Diterima: Permintaan diterima, tetapi mungkin tidak mengandungi sumber dalam respons. Ini berguna untuk permintaan tak segerak di bahagian pelayan. Pelayan menentukan sama ada untuk menghantar sumber atau tidak.
  • 204 Tiada Kandungan: Tiada mesej dalam badan respons.
  • 205 Tetapkan Semula Kandungan: Mengarahkan pelayan untuk menetapkan semula pembentangan dokumen.
  • 206 Kandungan Separa: Respons hanya mengandungi sebahagian daripada kandungan. Pengepala tambahan menentukan jumlah panjang kandungan dan maklumat lain.

3xx: Ubah hala

Sejenis mesej kepada klien tentang keperluan untuk mengambil satu tindakan lagi. Kes penggunaan yang paling biasa ialah mengubah hala klien ke alamat lain.

  • 301 Bergerak Secara Kekal: sumber kini boleh didapati secara berbeza alamat URL.
  • 303 Lihat Lain-lain: Sumber boleh ditemui buat sementara waktu di URL lain. Pengepala Lokasi mengandungi URL sementara.
  • 304 Tidak Diubah Suai: Pelayan menentukan bahawa sumber belum diubah suai dan pelanggan perlu menggunakan versi cache bagi respons. Untuk menyemak identiti maklumat, ETag (Cincangan Tag Entiti) digunakan;

4xx: Ralat pelanggan

Kelas mesej ini digunakan oleh pelayan jika ia memutuskan bahawa permintaan telah dihantar secara kesilapan. Kod yang paling biasa: 404 Tidak ditemui. Ini bermakna sumber itu tidak ditemui pada pelayan. Kod lain yang mungkin:

  • 400 Permintaan buruk : Soalan dibentuk dengan salah.
  • 401 Tanpa kebenaran: Pengesahan diperlukan untuk membuat permintaan. Maklumat dihantar melalui pengepala Kebenaran.
  • 403 Terlarang: Pelayan tidak membenarkan akses kepada sumber.
  • Kaedah 405 Tidak Dibenarkan: Kaedah HTTP yang tidak sah telah digunakan untuk mengakses sumber.
  • 409 Konflik: pelayan tidak dapat memproses permintaan sepenuhnya kerana cuba untuk berubah lagi versi baru sumber. Ini sering berlaku dengan permintaan PUT.

5xx: Ralat pelayan

Satu siri kod yang digunakan untuk mengesan ralat pelayan semasa memproses permintaan. Paling biasa: 500 Dalaman Ralat Pelayan. Pilihan lain:

  • 501 Tidak Dilaksanakan: Pelayan tidak menyokong fungsi yang diminta.
  • Perkhidmatan 503 Tidak Tersedia: Ini boleh berlaku jika pelayan mengalami ralat atau terlebih muatan. Biasanya dalam kes ini, pelayan tidak bertindak balas, dan masa yang diberikan untuk respons tamat.

Format Mesej Permintaan/Respons

Dalam imej berikut anda boleh melihat proses skema menghantar permintaan oleh klien, memproses dan menghantar respons oleh pelayan.

Mari kita lihat struktur mesej yang dihantar melalui HTTP:

Mesej = *() CRLF [ ] = Talian Permintaan | Talian Status = Nama Medan ":" Nilai Medan

Mesti ada garis kosong antara pengepala dan badan mesej. Terdapat beberapa tajuk:

Badan tindak balas mungkin mengandungi maklumat penuh atau sebahagian daripadanya, jika ciri yang sepadan diaktifkan (Pengekodan Pemindahan: terpotong). HTTP/1.1 juga menyokong pengepala Pemindahan-Pengekodan.

Tajuk Umum

Berikut ialah beberapa jenis pengepala yang digunakan dalam kedua-dua permintaan dan respons:

Pengepala umum = Kawalan Cache | Sambungan | Tarikh | Pragma | Treler | Pemindahan-Pengekodan | Naik taraf | Melalui | Amaran

Kami telah membincangkan beberapa perkara dalam artikel ini, beberapa akan kami bincangkan dengan lebih terperinci di bahagian kedua.

Pengepala melalui digunakan dalam permintaan TRACE dan dikemas kini oleh semua pelayan proksi.

Pengepala Pragma digunakan untuk menyenaraikan pengepala tersuai. Contohnya, Pragma: no-cache adalah sama dengan Cache-Control: no-cache. Kami akan bercakap lebih lanjut mengenai ini dalam bahagian dua.

Pengepala Tarikh digunakan untuk menyimpan tarikh dan masa permintaan/tindak balas.

Pengepala Naik Taraf digunakan untuk menukar protokol.

Pemindahan-Pengekodan bertujuan untuk membahagikan respons kepada beberapa bahagian menggunakan Pemindahan-Pengekodan: ketulan. Ini ialah ciri baharu dalam HTTP/1.1.

Pengepala Entiti

Pengepala entiti menyampaikan maklumat meta tentang kandungan:

Pengepala entiti = Benarkan | Pengekodan Kandungan | Kandungan-Bahasa | Panjang Kandungan | Kandungan-Lokasi | Kandungan-MD5 | Julat Kandungan | Jenis Kandungan | Tamat tempoh | Terakhir Diubah Suai

Semua pengepala diawali dengan Kandungan- memberikan maklumat tentang struktur, pengekodan dan saiz badan mesej.

Pengepala Tamat Tempoh mengandungi masa dan tarikh tamat tempoh entiti. Nilai "tidak pernah luput" bermaksud masa + 1 kod s detik semasa. Terakhir Diubah Suai mengandungi masa dan tarikh peluang terakhir intipati.

Menggunakan pengepala ini, anda boleh menentukan maklumat yang diperlukan untuk tugas anda.

Format Permintaan

Permintaan kelihatan seperti ini:

Talian Permintaan = Kaedah SP URI SP HTTP-Versi Kaedah CRLF = "PILIHAN" | "KEPALA" | "DAPAT" | "POST" | "LETAK" | "PADAM" | "JEJAK"

SP ialah pemisah antara token. Versi HTTP dinyatakan dalam Versi HTTP. Permintaan sebenar kelihatan seperti ini:

DAPATKAN /articles/http-basics HTTP/1.1 Hos: www.articles.com Sambungan: keep-alive Cache-Control: no-cache Pragma: no-cache Terima: text/html,application/xhtml+xml,application/xml; q=0.9,*/*;q=0.8

Senarai tajuk permintaan yang mungkin:

Request-header = Terima | Terima-Charset | Terima-Pengekodan | Terima-Bahasa | Keizinan | Jangkakan | Daripada | Hos | If-Match | Jika-Diubahsuai-Sejak | Jika-Tiada-Padanan | Julat Jika | Jika-Tidak Diubahsuai-Sejak | Max-Forwards | Keizinan Proksi | Julat | Perujuk | TE | Ejen Pengguna

Pengepala Terima menentukan yang disokong jenis mime, bahasa, pengekodan aksara. Pengepala Daripada, Hos, Perujuk dan Ejen Pengguna mengandungi maklumat tentang klien. Awalan if- bertujuan untuk mewujudkan keadaan. Jika syarat tidak lulus, ralat 304 Not Modified akan berlaku.

Format Respons

Format respons hanya berbeza dalam status dan beberapa pengepala. Status kelihatan seperti ini:

Talian Status = HTTP-Versi SP Status-Kod SP Sebab-Frasa CRLF

  • Versi HTTP
  • Kod status
  • Mesej status yang boleh dibaca manusia

Status biasa kelihatan seperti ini:

HTTP/1.1 200 OK

Tajuk respons boleh seperti berikut:

Pengepala respons = Terima-Julat | Umur | ETag | Lokasi | Proksi-Sahkan | Cuba Semula-Selepas | Pelayan | Pelbagaikan | WWW-Sahkan

  • Umur ialah masa dalam beberapa saat apabila mesej dibuat pada pelayan.
  • Entiti ETag MD5 untuk menyemak perubahan dan pengubahsuaian pada respons.
  • Lokasi digunakan untuk ubah hala dan mengandungi URL baharu.
  • Pelayan menentukan pelayan tempat respons dijana.

Saya rasa itu sudah cukup teori untuk hari ini. Sekarang mari kita lihat alat yang boleh kita gunakan untuk memantau mesej HTTP.

Alat untuk mengesan trafik HTTP

Terdapat banyak alat pemantauan yang tersedia Trafik HTTP. Berikut adalah beberapa daripadanya:

Yang paling biasa digunakan ialah Alat Pembangun Chrome:

Jika kita bercakap tentang penyahpepijat, anda boleh menggunakan Fiddler:

Untuk memantau trafik HTTP anda memerlukan curl, tcpdump dan tshark.

Perpustakaan untuk bekerja dengan HTTP - jQuery AJAX

Memandangkan jQuery sangat popular, ia juga mempunyai alat untuk mengendalikan respons HTTP untuk permintaan AJAX. Maklumat tentang jQuery.ajax(tetapan) boleh didapati di laman web rasmi.

Dengan menghantar objek tetapan dan menggunakan fungsi panggil balik beforeSend, kami boleh menetapkan pengepala permintaan menggunakan kaedah setRequestHeader().

$.ajax(( url: "http://www.articles.com/latest", taip: "GET", beforeSend: function (jqXHR) ( jqXHR.setRequestHeader("Accepts-Language", "en-US,en "); )));

Jika anda ingin memproses status permintaan, anda boleh melakukannya seperti ini:

$.ajax(( statusCode: ( 404: function() ( alert("halaman tidak ditemui"); ) ) ));

Pokoknya

Ini dia, lawatan asas protokol HTTP. Bahagian kedua akan mengandungi fakta dan contoh yang lebih menarik.

Bahasa, dsb. Ia adalah kerana keupayaan untuk menentukan cara mesej dikodkan bahawa pelanggan dan pelayan boleh bertukar-tukar data binari, walaupun protokol ini ialah teks.

Kelebihan

Kesederhanaan

Protokol ini sangat mudah untuk dilaksanakan sehingga memudahkan untuk membuat aplikasi klien.

Kebolehlanjutan

Anda boleh meluaskan keupayaan protokol dengan mudah dengan melaksanakan pengepala anda sendiri sambil mengekalkan keserasian dengan pelanggan dan pelayan lain. Mereka akan mengabaikan pengepala yang tidak diketahui oleh mereka, tetapi pada masa yang sama anda boleh mendapatkan fungsi yang anda perlukan semasa menyelesaikan masalah tertentu.

Kelaziman

Apabila memilih protokol HTTP untuk menyelesaikan masalah tertentu satu faktor penting adalah kelazimannya. Akibatnya, ini adalah banyaknya pelbagai dokumentasi mengenai protokol dalam banyak bahasa di dunia, kemasukan alat pembangunan yang mudah digunakan dalam IDE yang popular, sokongan untuk protokol sebagai pelanggan dalam banyak program, dan pilihan yang luas di kalangan syarikat pengehosan dengan pelayan HTTP.

Kelemahan dan masalah

Saiz mesej yang besar

Penggunaan format teks dalam protokol menimbulkan kelemahan yang sepadan: saiz besar mesej berbanding penghantaran data binari. Disebabkan ini, beban pada peralatan semasa menjana, memproses dan menghantar mesej meningkat. Untuk menyelesaikan masalah ini, protokol termasuk cara terbina dalam untuk caching pada sisi klien, serta cara untuk memampatkan kandungan yang dihantar. Dokumen kawal selia untuk protokol menyediakan kehadiran pelayan proksi, yang membolehkan pelanggan menerima dokumen dari pelayan yang paling dekat dengannya. Juga, pengekodan delta telah diperkenalkan ke dalam protokol supaya bukan keseluruhan dokumen dihantar kepada pelanggan, tetapi hanya bahagiannya yang diubah suai.

Kekurangan "navigasi"

Walaupun protokol itu dibangunkan sebagai cara untuk bekerja dengan sumber pelayan, ia kekurangan secara eksplisit cara navigasi antara sumber-sumber ini. Sebagai contoh, pelanggan tidak boleh meminta senarai secara eksplisit fail yang tersedia, bagaimana dalam. Diandaikan bahawa pengguna akhir sudah mengetahui hiperpautan. Ini adalah perkara biasa dan mudah untuk manusia, tetapi sukar apabila tugasnya adalah untuk memproses dan menganalisis semua sumber pelayan secara automatik tanpa campur tangan manusia. Penyelesaian kepada masalah ini terletak sepenuhnya di bahu pembangun aplikasi yang menggunakan protokol ini.

Tiada sokongan pengedaran

Protokol HTTP dibangunkan untuk menyelesaikan masalah harian biasa, di mana masa pemprosesan permintaan itu sendiri harus mengambil sedikit masa atau tidak diambil kira sama sekali. Tetapi dalam kegunaan industri Dengan penggunaan pengkomputeran teragih dan beban tinggi pada pelayan, protokol HTTP tidak berdaya. Pada tahun 1998, W3C mencadangkan protokol alternatif HTTP-NG(Bahasa Inggeris) HTTP Generasi Seterusnya) Untuk penggantian lengkap ketinggalan zaman dengan memberi tumpuan kepada bidang ini. Idea keperluannya disokong oleh pakar utama dalam pengkomputeran teragih, tetapi protokol ini masih di peringkat pembangunan.

Perisian

Semua perisian untuk bekerja dengan protokol HTTP dibahagikan kepada tiga kategori besar:

  • Pelayan sebagai pembekal utama perkhidmatan penyimpanan dan pemprosesan maklumat (pemprosesan permintaan).
  • Pelanggan- pengguna akhir perkhidmatan pelayan (menghantar permintaan).
  • proksi untuk melaksanakan perkhidmatan pengangkutan.

Untuk membezakan pelayan akhir daripada proksi dalam dokumentasi rasmi istilah yang digunakan pelayan asal(Bahasa Inggeris) Pelayan asal). Sudah tentu, produk perisian yang sama boleh melaksanakan fungsi pelanggan, pelayan atau perantara secara serentak, bergantung pada tugas yang diberikan. Spesifikasi protokol HTTP memperincikan tingkah laku untuk setiap peranan ini.

Pelanggan

Protokol HTTP pada asalnya dibangunkan untuk mengakses dokumen hiperteks di World Wide Web. Oleh itu, pelaksanaan pelanggan utama ialah pelayar(ejen pengguna). Pelayar popular(V turutan abjad): Chrome, internet Explorer, Mozilla Firefox, Safari.

Lihat juga: Senarai pelayar dan Perbandingan pelayar

Untuk melihat kandungan tapak yang disimpan pada komputer tanpa sambungan Internet, ia telah dicipta pelayar luar talian. Antara yang terkenal. Mereka membenarkan anda memuat turun fail tertentu pada bila-bila masa selepas kehilangan sambungan ke pelayan web. Program popular pada OS Windows termasuk Muat Turun Master, Pengurus Muat Turun Percuma dan ReGet. Dalam KGet dan d4x (Pemuat Turun Untuk X). banyak pengguna Linux Mereka juga lebih suka menggunakan NASA World Wind, mereka juga menggunakan HTTP.

Protokol HTTP sering digunakan oleh program untuk memuat turun kemas kini.

Pelbagai program robot digunakan dalam enjin carian Internet. Antaranya labah-labah web(crawler) yang mengikuti hiperpautan, menyusun pangkalan data sumber pelayan dan menyimpan kandungannya untuk analisis lanjut.

Lihat juga: Senarai enjin carian, Arkib Internet

Pelayan asal

Pelaksanaan utama: Maklumat Internet Perkhidmatan (IIS), nginx.

Lihat juga: Senarai pelayan web

Pelayan proksi

Pelaksanaan utama: UserGate, Multiproxy, Naviscope, Senarai pelayan web

Sejarah perkembangan

HTTP/0.9

HTTP/1.0

HTTP/1.1

Versi semasa protokol telah diterima pakai pada bulan Jun. Baharu dalam versi ini ialah mod "sambungan kekal": Garisan permulaan) - menentukan jenis mesej;

  • Tajuk Pengepala) - mencirikan badan mesej, parameter penghantaran dan maklumat lain;
  • Badan mesej Badan Mesej) - data mesej itu sendiri. Mesti dipisahkan daripada tajuk dengan baris kosong.
  • Pengepala dan kandungan mesej mungkin tiada, tetapi baris permulaannya unsur wajib, kerana ia menunjukkan jenis permintaan/tindak balas. Pengecualian ialah versi 0.9 protokol, di mana mesej permintaan mengandungi hanya baris permulaan, dan mesej respons hanya mengandungi badan mesej.

    Barisan permulaan

    Garis permulaan adalah berbeza untuk permintaan dan respons. Rentetan pertanyaan kelihatan seperti ini:

    DAPATKAN URI- untuk protokol versi 0.9. Kaedah URI HTTP/ Versi- untuk versi lain.

    Untuk meminta halaman untuk artikel tertentu, pelanggan mesti lulus rentetan:

    DAPATKAN /wiki/Http HTTP/1.0

    Baris permulaan respons pelayan mempunyai format berikut:

    HTTP/ Versi Kod Status Penjelasan

    • Versi- sepasang angka Arab yang dipisahkan oleh titik, seperti dalam permintaan.
    • Kod Status(Bahasa Inggeris) Kod Status) - tiga angka Arab. Kod status menentukan kandungan selanjutnya mesej dan tingkah laku pelanggan.
    • Penjelasan(Bahasa Inggeris) Frasa Sebab) - penjelasan teks ringkas tentang kod respons untuk pengguna. Tidak menjejaskan mesej dalam apa jua cara dan adalah pilihan.

    Sebagai contoh, pelayan membalas permintaan kami sebelumnya oleh pelanggan untuk halaman ini dengan baris:

    HTTP/1.0 200 Ok

    Kaedah

    PILIHAN

    Digunakan untuk menentukan keupayaan pelayan web atau parameter sambungan untuk sumber tertentu. Pelayan HARUS memasukkan pengepala Benarkan dalam responsnya dengan senarai kaedah yang disokong. Pengepala respons juga mungkin termasuk maklumat tentang sambungan yang disokong.

    Adalah diharapkan bahawa permintaan pelanggan mungkin mengandungi badan mesej untuk menunjukkan maklumat yang diminatinya. Format badan dan prosedur untuk bekerja dengannya pada masa ini tidak ditentukan. Pelayan harus mengabaikannya buat masa ini. Keadaannya sama dengan badan dalam tindak balas pelayan.

    Untuk mengetahui keupayaan seluruh pelayan, pelanggan mesti menyatakan asterisk - "*" dalam URI. PILIHAN * Permintaan HTTP/1.1 juga boleh digunakan untuk menyemak kesihatan pelayan (serupa dengan ping) dan untuk menguji sama ada pelayan menyokong HTTP versi 1.1.

    Hasil kaedah ini tidak dicache.

    DAPATKAN

    Digunakan untuk meminta kandungan sumber yang ditentukan. Anda juga boleh memulakan proses menggunakan kaedah GET. Dalam kes ini, maklumat tentang kemajuan proses harus disertakan dalam badan mesej respons.

    Pelanggan boleh menghantar parameter pelaksanaan permintaan dalam URI sumber sasaran selepas "? ":
    DAPATKAN /path/resource?param1=value1¶m2=value2 HTTP/1.1

    Menurut piawaian HTTP, permintaan GET dianggap idempoten - mengulangi permintaan GET yang sama beberapa kali seharusnya menghasilkan hasil yang sama (dengan syarat sumber itu sendiri tidak berubah dalam masa antara permintaan). Ini membolehkan anda menyimpan jawapan kepada cache DAPATKAN permintaan.

    Sebagai tambahan kepada kaedah GET biasa, terdapat juga perbezaan. Permintaan GET bersyarat mengandungi If-Modified-Since, If-Match, If-Julat dan pengepala serupa. GET separa mengandungi Julat dalam permintaan. Prosedur untuk melaksanakan permintaan tersebut ditakrifkan secara berasingan oleh piawaian.

    KEPALA

    Sama seperti kaedah GET, kecuali tiada badan dalam respons pelayan. Permintaan HEAD biasanya digunakan untuk mendapatkan semula metadata, menyemak kewujudan sumber (pengesahan URL) dan melihat sama ada ia telah berubah sejak ia diakses kali terakhir.

    Pengepala respons mungkin dicache. Jika metadata sumber tidak sepadan dengan maklumat yang sepadan dalam cache, salinan sumber tersebut ditandakan sebagai lapuk.

    POS

    Digunakan untuk memindahkan data pengguna ke sumber tertentu. Sebagai contoh, pada blog, pelawat biasanya boleh memasukkan ulasan pada siaran ke dalam bentuk HTML, selepas itu mereka DIPOS ke pelayan dan diletakkan pada halaman. Dalam kes ini, data yang dihantar (dalam contoh dengan blog, teks ulasan) disertakan dalam kandungan permintaan. Begitu juga, fail biasanya dimuat naik menggunakan kaedah POST.

    Tidak seperti kaedah GET, kaedah POST tidak dianggap idempoten, bermakna mengulangi permintaan POST yang sama beberapa kali boleh mengembalikan hasil yang berbeza (contohnya, selepas setiap ulasan diserahkan, satu salinan ulasan itu akan muncul).

    Jika keputusan pelaksanaan adalah 200 (Ok) dan 204 (Tiada Kandungan), mesej tentang hasil permintaan harus disertakan dalam badan respons. Jika sumber telah dibuat, pelayan HARUS mengembalikan respons 201 (Dicipta) dengan URI sumber baharu dalam pengepala Lokasi.

    Mesej respons pelayan kepada kaedah POST tidak dicache.

    LETAK

    Digunakan untuk memuatkan kandungan permintaan ke URI yang dinyatakan dalam permintaan. Jika sumber tidak wujud pada URI yang diberikan, pelayan menciptanya dan mengembalikan status 201 (Dicipta). Jika sumber telah ditukar, pelayan mengembalikan 200 (Ok) atau 204 (Tiada Kandungan). Pelayan TIDAK MESTI mengabaikan tajuk Kandungan-* yang tidak sah yang dihantar oleh klien bersama-sama dengan mesej. Jika mana-mana pengepala ini tidak dapat dikenali atau tidak sah di bawah keadaan semasa, maka kod ralat 501 (Tidak Dilaksanakan) mesti dikembalikan.

    Perbezaan asas antara kaedah POST dan PUT ialah pemahaman tentang tujuan URI sumber. Kaedah POST menganggap bahawa URI yang ditentukan akan memproses kandungan yang dihantar oleh klien. Dengan menggunakan PUT, pelanggan menganggap bahawa kandungan yang dimuat turun sepadan dengan sumber yang terletak di URI yang diberikan.

    Mesej respons pelayan kepada kaedah PUT tidak dicache.

    PATCH

    Sama seperti PUT, tetapi terpakai hanya pada serpihan sumber.

    PADAM

    Memadamkan sumber yang ditentukan.

    JEJAK

    Mengembalikan permintaan yang diterima supaya pelanggan dapat melihat pelayan perantaraan yang menambah atau menukar permintaan itu.

    SAMBUNG

    Untuk digunakan dengan pelayan proksi yang boleh bertukar secara dinamik kepada mod terowong

    PAUTAN

    Mewujudkan hubungan antara sumber yang ditentukan dan lain-lain.

    NYAHPAUT

    Mengalih keluar sambungan sumber yang ditentukan dengan orang lain.

    Kod status

    Kod status adalah sebahagian daripada baris pertama respons pelayan. Ia mewakili integer 3 angka Arab. Digit pertama menunjukkan kelas keadaan. Kod respons biasanya diikuti dengan frasa penjelasan dalam bahasa Inggeris yang dipisahkan oleh ruang, yang menunjukkan sebab bagi respons khusus ini.

    Pelanggan belajar daripada kod respons tentang hasil permintaannya dan menentukan tindakan yang perlu diambil seterusnya. Set kod status adalah standard dan semuanya diterangkan dalam dokumen IETF yang berkaitan. Pelanggan mungkin tidak mengetahui semua kod status, tetapi ia mesti bertindak balas mengikut kelas kod tersebut.

    Pada masa ini terdapat lima kelas kod status.

    1xx Bermaklumat (Rusia) Bermaklumat) Kelas ini mengandungi kod yang memaklumkan tentang proses pemindahan. Dalam HTTP/1.0, mesej dengan kod sedemikian harus diabaikan. Dalam HTTP/1.1, pelanggan mesti bersedia untuk menerima kelas mesej ini sebagai respons biasa, tetapi tidak perlu menghantar apa-apa ke pelayan. Mesej itu sendiri daripada pelayan mengandungi hanya baris permulaan respons dan, jika perlu, beberapa medan pengepala khusus respons. Pelayan proksi mesti menghantar mesej sedemikian lebih jauh dari pelayan kepada klien. 2xx Kejayaan (Rusia) Berjaya) Mesej daripada kelas ini memaklumkan tentang kes penerimaan dan pemprosesan permintaan pelanggan yang berjaya. Bergantung pada status, pelayan juga boleh menghantar pengepala dan badan mesej. 3xx Redirection (Rusia) Pengalihan semula ) Kod status Kelas 3xx memberitahu pelanggan bahawa permintaan seterusnya mesti dibuat kepada URI yang berbeza untuk operasi berjaya. Dalam kebanyakan kes, alamat baharu ditunjukkan dalam medan Lokasi pengepala. Dalam kes ini, pelanggan mesti, sebagai peraturan, membuat peralihan automatik (jarl. ubah hala). Ambil perhatian bahawa apabila anda mengakses sumber seterusnya, anda boleh mendapat respons daripada kelas kod yang sama. Malah mungkin terdapat rangkaian ubah hala yang panjang yang, jika dilakukan secara automatik, akan menghasilkan beban yang berlebihan pada peralatan. Oleh itu, pembangun protokol HTTP amat mengesyorkan bahawa selepas tindak balas kedua berturut-turut, anda mesti meminta pengesahan pengalihan daripada pengguna (sebelum ini ia disyorkan selepas ke-5). Pelanggan bertanggungjawab untuk memantau ini, kerana pelayan semasa boleh mengubah hala klien ke sumber pada pelayan lain. Pelanggan juga mesti menghalang daripada masuk ke ubah hala bulat. Ralat Pelanggan 4xx (Rusia) Ralat pelanggan) Kelas kod 4xx bertujuan untuk menunjukkan ralat pada bahagian klien. Apabila menggunakan semua kaedah kecuali HEAD, pelayan mesti mengembalikan penjelasan hiperteks kepada pengguna dalam badan mesej. Untuk mengingati nilai kod dari 400 hingga 417, terdapat kaedah ilustrasi mnemonik 5xx Ralat Pelayan (Rusia. ralat pelayan) Kod 5xx diperuntukkan untuk kes operasi yang tidak berjaya disebabkan oleh kesalahan pelayan. Untuk semua situasi selain daripada menggunakan kaedah HEAD, pelayan mesti memasukkan dalam badan mesej penjelasan yang akan dipaparkan oleh klien kepada pengguna.

    Tajuk

    Badan mesej

    Contoh Dialog HTTP

    Permintaan GET biasa

    Permintaan pelanggan:

    DAPATKAN /wiki/ muka surat HTTP/1.1 Hos: ru.wikipedia.org Ejen Pengguna: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Terima: teks/html Sambungan: tutup

    Respons pelayan:

    HTTP/1.0 200 OK Tarikh: Rab, 11 Feb 2009 11:20:59 GMT Pelayan: Apache X-Powered-Oleh: PHP/5.2.4-2ubuntu5wm1 Terakhir Diubah Suai: Rab, 11 Feb 2009 11:20:59 GMT Kandungan -Bahasa: ru Jenis-Kandungan: teks/html; charset=utf-8 Kandungan-Panjang: 1234 Sambungan: tutup (berikut ialah halaman yang diminta dalam

    Ubah hala

    Katakan syarikat rekaan Contoh Corp. terdapat tapak utama di http://example.com dan domain alias example-corp.com. Pelanggan menghantar permintaan untuk halaman Perihal ke domain kedua (beberapa pengepala diketepikan):

    Lokasi: http://www.example.com/about.html#contacts Tarikh: Kha, 19 Feb 2009 11:08:01 GMT Pelayan: Apache/2.2.4 Jenis Kandungan: teks/html; charset=windows-1251 Kandungan-Panjang: 110 (baris kosong) Tekan di sini

    Anda boleh menentukan serpihan dalam pengepala Lokasi seperti dalam contoh ini. Penyemak imbas tidak memasukkan serpihan dalam permintaan kerana ia berminat dengan keseluruhan dokumen. Tetapi ia akan menatal halaman secara automatik ke serpihan "kenalan" sebaik sahaja ia memuatkannya. Dokumen HTML pendek dengan pautan juga diletakkan di dalam badan respons, dengan bantuan pelawat akan dibawa ke halaman arahan, jika penyemak imbas tidak beralih kepadanya secara automatik. Pengepala Jenis Kandungan mengandungi ciri-ciri penjelasan HTML khusus ini, bukan dokumen yang terletak di URL sasaran.

    Katakan syarikat yang sama ini Contoh Corp. mempunyai beberapa pejabat serantau di seluruh dunia. Dan untuk setiap pejabat perwakilan mereka mempunyai tapak web dengan ccTLD yang sepadan. Permintaan halaman rumah Tapak utama example.com mungkin kelihatan seperti ini:

    / Hos HTTP/1.1: www.example.com Ejen Pengguna: MyLonelyBrowser/5.0 Terima: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru ,en-us;q=0.7,en;q=0.3 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7

    Pelayan mengambil kira pengepala Accept-Language dan menjana respons dengan ubah hala sementara ke pelayan Rusia example.ru, menunjukkan alamatnya dalam pengepala Lokasi:

    HTTP/1.x 302 Dijumpai Lokasi: http://www.example.ru/ Kawalan Cache: peribadi Tarikh: Kha, 19 Feb 2009 11:08:01 GMT Pelayan: Apache/2.2.6 Jenis Kandungan: teks/html; charset=windows-1251 Kandungan-Panjang: 82 (baris kosong) Contoh Corp. Rusia

    Perhatikan pengepala Kawalan Cache. Nilai "peribadi" memberitahu pelayan lain (terutamanya proksi) bahawa respons boleh dicache pada sisi klien. Jika tidak, ada kemungkinan pelawat seterusnya dari negara lain akan sentiasa pergi ke pejabat perwakilan yang berbeza.

    Kod respons (Lihat Lain) dan (Ubah Hala Sementara) juga digunakan untuk ubah hala.

    Menyambung semula dan memuat turun serpihan

    Katakan organisasi rekaan menawarkan untuk memuat turun video persidangan lalu daripada tapak web di http://example.org/conf-2009.avi dengan volum lebih kurang 160 MB. Mari lihat cara fail ini dimuat turun sekiranya berlaku kegagalan dan cara pengurus muat turun akan mengatur muat turun berbilang benang beberapa serpihan.

    Dalam kedua-dua kes, pelanggan akan membuat permintaan pertama mereka seperti ini:

    GET /conf-2009.avi Hos HTTP/1.0: example.org Terima: */* Ejen Pengguna: Mozilla/4.0 (serasi; MSIE 5.0; Windows 98) Perujuk: http://example.org/

    Pengepala Perujuk menunjukkan bahawa fail telah diminta daripada halaman utama tapak. Pengurus muat turun biasanya juga menunjukkannya untuk meniru peralihan daripada halaman tapak web. Tanpanya, pelayan boleh bertindak balas (Access Forbidden) jika permintaan daripada tapak lain tidak dibenarkan. Dalam kes kami, pelayan mengembalikan respons yang berjaya:

    HTTP/1.1 200 OK Tarikh: Kha, 19 Feb 2009 12:27:04 GMT Pelayan: Apache/2.2.3 Terakhir Diubah Suai: Rab, 18 Jun 2003 16:05:58 GMT ETag: "56d-9989200-1132c5" -Jenis: video/x-msvideo Panjang Kandungan: 160993792 Julat Terima: bait Sambungan: tutup (baris kosong) (kandungan binari keseluruhan fail)

    Pengepala Accept-Ranges memberitahu pelanggan bahawa ia boleh meminta serpihan daripada pelayan, menunjukkan offset mereka dari permulaan fail dalam bait. Jika pengepala ini tiada, pelanggan boleh memberi amaran kepada pengguna bahawa kemungkinan besar tidak dapat memuat turun fail. Berdasarkan nilai pengepala Panjang Kandungan, pengurus muat turun akan membahagikan keseluruhan volum kepada serpihan yang sama dan memintanya secara berasingan, mengatur beberapa utas. Jika pelayan tidak menyatakan saiz, maka pelanggan tidak akan dapat melaksanakan muat turun selari, tetapi pada masa yang sama dia akan dapat meneruskan memuat turun fail sehingga pelayan bertindak balas (Julat yang Diminta Tidak Memuaskan).

    Katakan pada 84 megabait sambungan Internet telah terganggu dan proses muat turun dijeda. Apabila sambungan Internet dipulihkan, penyemak imbas secara automatik menghantar permintaan baharu kepada pelayan, tetapi dengan arahan untuk mengembalikan kandungan daripada megabait ke-84:

    GET /conf-2009.avi Hos HTTP/1.0: example.org Terima: */* Ejen Pengguna: Mozilla/4.0 (serasi; MSIE 5.0; Windows 98) Julat: bait=88080384- Perujuk: http://example.org/

    Pelayan tidak perlu mengingati apa dan dari siapa permintaan sebelumnya, jadi pelanggan memasukkan semula pengepala Perujuk seolah-olah ia adalah permintaan pertamanya. Nilai pengepala Julat yang ditentukan memberitahu pelayan untuk "memberi kandungan daripada bait ke-88080384 hingga ke penghujungnya." Dalam hal ini, pelayan akan mengembalikan respons berikut:

    HTTP/1.1 206 Kandungan Separa Tarikh: Kha, 19 Feb 2009 12:27:08 GMT Pelayan: Apache/2.2.3 Terakhir Diubah Suai: Rab, 18 Jun 2003 16:05:58 GMT ETag: "56d-9989200-1132c580" Julat Terima: bait Julat Kandungan: bait 88080384-160993791/160993792 Panjang Kandungan: 72913408 Sambungan: tutup Jenis Kandungan: video/x-msvideo (baris kosong) (kandungan binari daripada 84 megabait)

    Pengepala Accept-Julat tidak lagi diperlukan di sini, kerana pelanggan sudah mengetahui tentang keupayaan pelayan ini. Pelanggan mengetahui bahawa serpihan sedang dihantar oleh kod (Kandungan Separa). Pengepala Julat Kandungan mengandungi maklumat tentang serpihan ini: nombor bait permulaan dan penamat, dan selepas garis miring - jumlah saiz keseluruhan fail dalam bait. Beri perhatian kepada pengepala Kandungan-Panjang - ia menunjukkan saiz badan mesej, iaitu, serpihan yang dihantar. Jika pelayan mengembalikan beberapa serpihan, maka Panjang Kandungan akan mengandungi jumlah volumnya.

    Sekarang mari kembali ke pengurus muat turun. Mengetahui jumlah saiz fail "conf-2009.avi", program membahagikannya kepada 10 bahagian yang sama. Pengurus akan memuatkan yang awal pada permintaan pertama, mengganggu sambungan sebaik sahaja ia mencapai permulaan yang kedua. Dia akan meminta selebihnya secara berasingan. Sebagai contoh, bahagian ke-4 akan diminta dengan pengepala berikut (beberapa pengepala ditinggalkan - lihat contoh penuh di atas):

    GET /conf-2009.avi HTTP/1.0 Julat: bait=64397516-80496894

    Sambutan pelayan dalam kes ini adalah seperti berikut (beberapa pengepala ditinggalkan - lihat contoh penuh di atas):

    HTTP/1.1 206 Kandungan Separa Julat Terima: bait Julat Kandungan: bait 64397516-80496894/160993792 Panjang Kandungan: 16099379 (baris kosong) (kandungan binari bahagian 4)

    Jika permintaan sedemikian dihantar ke pelayan yang tidak menyokong serpihan, ia akan mengembalikan respons standard (OK) seperti yang ditunjukkan pada awalnya, tetapi tanpa pengepala Accept-Julat.

    Lihat juga, julat bait, jawapan 406, jawapan 416.

    Mekanisme Protokol Asas

    GET separa

    HTTP membenarkan anda untuk meminta bukan keseluruhan kandungan sumber sekaligus, tetapi hanya serpihan tertentu. Permintaan sedemikian dipanggil GET separa, keupayaan untuk melaksanakannya adalah pilihan (tetapi wajar) untuk pelayan. GET separa digunakan terutamanya untuk menyambung semula fail dan muat turun selari pantas dalam berbilang rangkaian. Sesetengah program memuat turun pengepala arkib, memaparkan struktur dalaman kepada pengguna, dan kemudian meminta serpihan daripada elemen yang ditentukan arkib.

    Untuk menerima serpihan, pelanggan menghantar permintaan kepada pelayan dengan pengepala Julat, menunjukkan di dalamnya yang diperlukan julat bait. Jika pelayan tidak memahami permintaan separa (mengabaikan pengepala Julat), maka ia akan mengembalikan keseluruhan kandungan dengan status , seperti GET biasa. Jika berjaya, pelayan mengembalikan respons dengan status 206 (Kandungan Separa) dan bukannya kod 200, termasuk pengepala Julat Kandungan dalam respons. Serpihan itu sendiri boleh dihantar dalam dua cara:

    Lihat juga .

    GET bersyarat

    Perundingan Kandungan

    Perundingan Kandungan(Bahasa Inggeris) Perundingan Kandungan) - mekanisme pengesanan automatik sumber yang diperlukan apabila terdapat beberapa jenis versi dokumen yang berbeza. Subjek penyelarasan boleh bukan sahaja sumber pelayan, tetapi juga halaman yang dikembalikan dengan mesej ralat (, dsb.).

    Terdapat dua jenis kelulusan utama:

    • Pelayan Diurus(Bahasa Inggeris) Didorong Pelayan).
    • Didorong oleh pelanggan(Bahasa Inggeris) Didorong Agen).

    Kedua-dua jenis atau setiap satunya secara berasingan boleh digunakan secara serentak.

    Spesifikasi protokol utama (RFC 2616) juga menyerlahkan apa yang dipanggil kelulusan telus(Bahasa Inggeris) Rundingan Telus) sebagai pilihan pilihan untuk menggabungkan kedua-dua jenis. Mekanisme yang terakhir tidak boleh dikelirukan dengan teknologi bebas Rundingan Kandungan Telus (TCN, Rusia Perundingan kandungan yang telus , lihat RFC 2295), yang bukan sebahagian daripada protokol HTTP, tetapi boleh digunakan dengannya. Kedua-duanya mempunyai perbezaan yang ketara dalam prinsip operasi dan makna perkataan "telus" ( telus). Dalam spesifikasi HTTP, ketelusan bermakna proses itu tidak dapat dilihat oleh pelanggan dan pelayan, dan dalam teknologi TCN, ketelusan bermaksud kebolehaksesan senarai penuh pilihan sumber untuk semua peserta dalam proses penghantaran data.

    Pelayan Diurus

    Jika terdapat berbilang versi sumber, pelayan boleh menganalisis pengepala permintaan pelanggan untuk menghasilkan perkara yang dipercayainya adalah versi yang paling sesuai. Tajuk utama yang dianalisis ialah Terima, Accept-Charset, Accept-Encoding, Accept-Languages ​​​​dan User-Agent. Adalah dinasihatkan untuk pelayan memasukkan pengepala Vary dalam respons yang menunjukkan parameter yang kandungan URI yang diminta berbeza.

    Lokasi geografi pelanggan boleh ditentukan oleh alamat IP jauh.

    Rundingan dipacu pelayan mempunyai beberapa kelemahan:

    • Pelayan hanya meneka pilihan mana yang paling disukai pengguna akhir, tetapi tidak dapat mengetahui dengan tepat apa yang diperlukan pada masa ini (contohnya, versi dalam bahasa Rusia atau Inggeris).
    • Terdapat banyak pengepala kumpulan Terima dihantar, tetapi sedikit sumber dengan berbilang pilihan. Disebabkan ini, peralatan mengalami beban yang berlebihan.
    • Cache yang dikongsi terhad dalam keupayaannya untuk menghasilkan respons yang sama kepada permintaan yang sama daripada pengguna yang berbeza.
    • Lulus Terima pengepala juga menjejaskan privasi pengguna dengan mendedahkan beberapa maklumat tentang pilihan pengguna.

    Didorong oleh pelanggan

    Dalam kes ini, jenis kandungan ditentukan hanya pada bahagian pelanggan. Untuk melakukan ini, pelayan mengembalikan dengan kod status 300 (Multiple Choices) atau 406 (Not Acceptable) senarai pilihan yang pengguna pilih yang sesuai. Penyesuaian didorong pelanggan adalah baik apabila kandungan berbeza mengikut cara biasa (seperti bahasa dan pengekodan) dan cache awam digunakan. Kelemahan utama: beban tambahan, kerana anda perlu membuat permintaan tambahan untuk mendapatkan kandungan yang diingini.

    Kelulusan telus

    Rundingan ini benar-benar telus kepada pelanggan dan pelayan. Dalam kes ini, cache kongsi digunakan yang mengandungi senarai pilihan, serupa dengan rundingan dipacu pelanggan. Jika cache memahami semua pilihan ini, maka ia membuat pilihan itu sendiri, seperti dalam rundingan dipacu pelayan. Ini mengurangkan beban pada pelayan asal dan menghapuskan permintaan tambahan daripada klien.

    Spesifikasi HTTP teras tidak menerangkan mekanisme rundingan telus secara terperinci.

    Pelbagai Kandungan

    Rencana utama: hierarki dengan bersarang elemen antara satu sama lain. Jenis media berbilang bahagian/* digunakan untuk menunjukkan berbilang kandungan. Bekerja dengan jenis sedemikian dijalankan mengikut peraturan am yang diterangkan dalam RFC 2046 (melainkan ditakrifkan sebaliknya oleh jenis media tertentu). Jika penerima tidak tahu cara mengendalikan jenis, maka ia memperlakukannya dengan cara yang sama seperti multipart/mixed .

    Di bahagian pelayan, mesej dengan pelbagai kandungan boleh dihantar sebagai tindak balas kepada apabila meminta pelbagai serpihan sumber. Dalam kes ini, jenis media berbilang bahagian/bait digunakan.



    Protokol Standard untuk pemindahan data melalui World Wide Web-- ini ialah HTTP ( Pemindahan HyperTeks Protokol - protokol pemindahan hiperteks). Ia menerangkan mesej yang boleh ditukar antara pelanggan dan pelayan. Setiap interaksi terdiri daripada satu permintaan ASCII diikuti dengan satu respons, serupa dengan respons standard MIME RFC 822. Semua pelanggan dan semua pelayan mesti mengikut protokol ini. Ia ditakrifkan dalam RFC 2616.

    Sambungan

    Cara biasa untuk penyemak imbas berkomunikasi dengan pelayan adalah dengan mewujudkan sambungan TCP ke port pelayan 80, walaupun prosedur ini tidak diperlukan secara rasmi. Nilai menggunakan TCP ialah penyemak imbas mahupun pelayan tidak perlu bimbang tentang kehilangan, pendua atau mesej dan pengakuan yang terlalu panjang. Semua ini disediakan oleh protokol TCP.

    Dalam HTTP 1.0, selepas sambungan diwujudkan, satu permintaan telah dihantar, yang mana satu respons telah diterima. Selepas ini, sambungan TCP telah ditamatkan. Pada masa itu, laman web biasa terdiri sepenuhnya daripada teks HTML, dan cara berinteraksi ini adalah memadai. Walau bagaimanapun, beberapa tahun berlalu, dan halaman itu mengandungi banyak ikon, imej dan hiasan lain. Jelas sekali, menyediakan sambungan TCP untuk menghantar satu ikon adalah membazir dan terlalu mahal.

    Pertimbangan ini membawa kepada penciptaan protokol HTTP 1.1, yang menyokong sambungan yang stabil. Ini bermakna adalah mungkin untuk mewujudkan sambungan TCP, menghantar permintaan, menerima respons, dan kemudian menghantar dan menerima permintaan dan respons tambahan. Oleh itu, kos overhed yang ditanggung semasa pemasangan sambungan berterusan dan pemotongan telah dikurangkan. Ia juga telah menjadi mungkin untuk membuat permintaan saluran paip, iaitu, menghantar permintaan 2 walaupun sebelum respons untuk permintaan 1 tiba.

    Walaupun HTTP direka khusus untuk digunakan dalam teknologi web, ia sengaja dibuat lebih umum daripada yang diperlukan, kerana ia bertujuan untuk kegunaan masa hadapan dalam aplikasi berorientasikan objek. Atas sebab ini, sebagai tambahan kepada pertanyaan halaman web biasa, operasi khas yang dipanggil kaedah telah dibangunkan. Mereka berhutang kewujudan mereka kepada teknologi SOAP. Setiap permintaan terdiri daripada satu atau lebih rentetan ASCII, dengan perkataan pertama ialah nama kaedah yang akan dipanggil. Kaedah terbina dalam disenaraikan dalam jadual dalam Rajah 6. Sebagai tambahan kepada kaedah umum ini, pelbagai objek Mungkin juga ada kaedah tertentu. Nama kaedah adalah sensitif huruf besar-besaran, i.e. kaedah GET wujud, tetapi mendapat tidak.

    Rajah 6 - Kaedah permintaan HTTP terbina dalam

    Kaedah GET meminta daripada pelayan halaman (yang secara amnya adalah objek, tetapi dalam amalan biasanya hanya fail) yang dikodkan mengikut piawaian MIME. Majoriti permintaan kepada pelayan adalah permintaan GET.

    Kaedah HEAD hanya meminta pengepala mesej, tanpa halaman itu sendiri. Menggunakan kaedah ini, anda boleh mengetahui bila halaman terakhir diubah suai untuk mengumpul maklumat indeks atau hanya untuk menyemak kefungsian URL yang diberikan.

    Kaedah PUT adalah bertentangan dengan kaedah GET: ia tidak membaca, tetapi menulis halaman. Kaedah ini membolehkan anda membuat satu set halaman web pada pelayan jauh. Badan permintaan mengandungi halaman. Ia mungkin dikodkan MIME. Dalam kes ini, baris yang mengikuti arahan PUT mungkin termasuk pelbagai pengepala, seperti Jenis Kandungan atau pengepala pengesahan, mengesahkan hak pelanggan untuk operasi yang diminta.

    Kaedah POST agak serupa dengan kaedah PUT. Ia juga mengandungi URL, tetapi bukannya menggantikan data sedia ada, data baharu itu "dilampirkan" (dalam pengertian umum) pada data sedia ada. Ini mungkin menyiarkan mesej ke persidangan atau menambahkan fail pada papan kenyataan BBS. Dalam amalan, PUT mahupun POST tidak digunakan secara meluas.

    Kaedah DELETE, secara tidak mengejutkan, memadamkan halaman. Seperti dalam kaedah PUT, di sini peranan khas pengesahan dan kebenaran untuk melaksanakan operasi ini mungkin memainkan peranan. Walaupun pengguna mempunyai kebenaran untuk memadam halaman, tidak ada jaminan bahawa kaedah DELETE akan memadam halaman, kerana walaupun pengguna bersetuju pelayan HTTP jauh fail itu sendiri mungkin dilindungi daripada pengubahsuaian atau pergerakan.

    Kaedah TRACE bertujuan untuk penyahpepijatan. Ia memberitahu pelayan untuk menghantar semula permintaan. Kaedah ini amat berguna apabila permintaan tidak diproses dengan betul dan pelanggan ingin mengetahui jenis permintaan yang sebenarnya diterima oleh pelayan.

    Kaedah CONNECT tidak digunakan pada masa ini. Ia dikhaskan untuk kegunaan masa hadapan.

    Kaedah OPTIONS membolehkan pelanggan bertanya kepada pelayan tentang sifatnya atau sifat fail tertentu.

    Sebagai tindak balas kepada setiap permintaan, respons diterima daripada pelayan yang mengandungi baris status, serta kemungkinan maklumat tambahan (contohnya, halaman web atau sebahagian daripadanya). Baris status mungkin mengandungi kod status tiga digit yang menunjukkan sama ada permintaan itu berjaya atau mengapa ia gagal. Kategori pertama bertujuan untuk membahagikan semua respons kepada lima kumpulan utama, seperti yang ditunjukkan dalam jadual dalam Rajah 7. Kod bermula dengan 1 Aхх) jarang digunakan dalam amalan. Kod bermula dengan 2 bermakna permintaan telah diproses dengan jayanya dan data (jika diminta) telah dihantar. Kod 3xx memberitahu pelanggan untuk mencuba nasib di tempat lain - sama ada menggunakan URL lain atau cachenya sendiri.

    Rajah 7 - Kumpulan kod status yang terkandung dalam respons pelayan

    Kod bermula dengan 4 bermakna permintaan itu gagal atas sebab tertentu yang berkaitan dengan klien: contohnya, halaman yang tidak wujud telah diminta atau permintaan itu sendiri tidak betul. Akhir sekali, kod 5xx menunjukkan ralat pelayan, sama ada disebabkan oleh ralat program atau beban sementara.

    Contoh penggunaan HTTP

    Oleh kerana HTTP adalah protokol teks, interaksi dengan pelayan melalui terminal (yang dalam kes ini bertindak sebagai bertentangan dengan penyemak imbas) boleh diatur dengan agak mudah. Anda hanya perlu mewujudkan sambungan TCP ke port 80 pelayan. Pembaca dibiarkan melihat sendiri bagaimana skrip ini berfungsi (lebih baik untuk menjalankannya sistem UNIX, kerana sesetengah sistem lain mungkin tidak memaparkan status sambungan). Jadi, urutan arahan adalah:

    Rajah 8 - jujukan arahan protokol HTTP

    Urutan arahan ini mewujudkan sambungan telnet (iaitu, sambungan TCP) ke port 80 pelayan web IETF yang terletak di www.ietf.org.

    Hasil sesi komunikasi direkodkan dalam fail log, yang kemudiannya boleh dilihat. Seterusnya datang arahan GET. Nama fail yang diminta dan protokol pemindahan ditunjukkan. Seterusnya datang baris yang diperlukan dengan pengepala Hos. Baris kosong yang mengikutinya juga diperlukan. Ia memberi isyarat kepada pelayan bahawa pengepala permintaan telah kehabisan. Perintah tutup (ini adalah arahan program telnet) menutup sambungan.

    Fail log sambungan, log, boleh dilihat menggunakan mana-mana penyunting teks. Ia sepatutnya bermula kira-kira seperti yang ditunjukkan dalam penyenaraian dalam Rajah 8, melainkan terdapat beberapa perubahan pada tapak web IETF pada masa ini.

    Rajah 9 - Mula output fail “www.ietf.org/rfc.html”

    Tiga baris pertama dalam penyenaraian ini dibuat program telnet, bukan tapak terpencil. Tetapi baris yang bermula dengan HTTP/1.1 sudah pun merupakan tindak balas IETF, menunjukkan bahawa pelayan ingin berkomunikasi dengan anda menggunakan protokol HTTP/1.1. Ini diikuti dengan satu siri pengepala dan, akhirnya, kandungan fail yang diminta itu sendiri. Pengepala ETag, yang merupakan pengecam halaman unik yang dikaitkan dengan caching, dan X-Pad, pengepala bukan standard yang membantu memerangi ralat penyemak imbas.

    Dalam era penggunaan Internet yang meluas, virus yang dipasang dalam penyemak imbas telah menjadi perkara biasa. Pada sumber kami, anda boleh menemui beberapa artikel tentang program berniat jahat seperti itu, tetapi Masa untuk Membaca menonjol di kalangan mereka. Virus ini boleh menembusi komputer pengguna yang lalai dan sangat merosakkan keseronokan bekerja dengan penyemak imbas. Pengguna akan melihat pengiklanan, dia akan mula sentiasa dipindahkan ke laman web Masa untuk Membaca, dan banyak masalah lain akan timbul, bagaimanapun, perkara pertama dahulu.

    Seperti kebanyakan Virus Trojan, Masa untuk Membaca melaksanakan tugas mudah - tunjukkan kepada pengguna jumlah maksimum pengiklanan supaya pencipta program menerima wang untuk siarannya, mengklik padanya dan memindahkan ke tapak rakan kongsi. Selalunya, perkhidmatan mempromosikan laman web mereka menggunakan virus digunakan oleh sumber penipuan atau halaman yang dijangkiti sesuatu yang lebih serius daripada Trojan pengiklanan.

    Sebaik sahaja virus Time to Read masuk ke komputer anda, virus itu menunjukkan dirinya dengan "gejala" berikut:

    • Pengiklanan tambahan sentiasa muncul di tapak, termasuk sepanduk pop timbul yang mengaburkan kandungan sepenuhnya sehingga anda mengklik padanya;
    • Tetapan keselamatan komputer tertakluk kepada perubahan, yang berbahaya bagi komputer yang mempunyai sambungan kekal ke Internet;
    • Halaman permulaan semua penyemak imbas secara automatik bertukar kepada tapak Masa untuk Membaca, yang bertujuan untuk meletakkan dirinya sebagai sumber carian dan berita;
    • Ubah hala automatik kepada sumber pihak ketiga. Penting: dari tapak yang tidak diketahui yang mana pengguna boleh dialihkan oleh virus Time to Read, terdapat risiko tinggi untuk memuat turun virus lain ke komputer.

    Jika anda perasan simptom di atas pada komputer anda, ini bermakna komputer anda dijangkiti virus Time to Read. Ia mesti dikeluarkan dengan segera untuk mengelakkan lebih lanjut masalah yang serius ke mana ia boleh membawa.

    Untuk mengalih keluar virus Time to Read daripada komputer anda, anda perlu memuat turun dan memasang dua program terlebih dahulu: AdwCleaner dan CCleaner. Aplikasi ini akan membantu anda mod automatik mengatasi virus, dan pengguna hanya perlu melakukan tugas paling mudah dalam mod "manual".

    Proses membuang virus Time to Read dari komputer anda adalah seperti berikut:

    1. Langkah pertama ialah mengalih keluar segala-galanya daripada komputer anda fail-fail sementara supaya program virus tidak dapat pulih selepas dialih keluar. Untuk melakukan ini, pergi ke bahagian yang sesuai:
    Pada Windows 7:(Pemacu sistem):\Users\Username\AppData\Local\Temp Pada Windows 10:(Pemacu sistem):\Users\Administrator\AppData\Local\Temp

    Anda tidak seharusnya bertindak secara selektif; anda mesti memadam semua fail yang terkandung dalam folder Temp, kerana setiap satu daripadanya boleh berbahaya.


    Sila ambil perhatian bahawa anda mesti menetapkan semula cache penyelesai daripada profil pentadbir.


    Cara memasang dan mengkonfigurasi CCleaner dengan betul:


    Pada ketika ini, penyingkiran virus Time to Read daripada komputer anda boleh dianggap selesai. Kami mengesyorkan anda memulakan semula komputer anda sebelum mula menggunakan penyemak imbas.

    Selalunya, virus Masa Membaca masuk ke komputer pengguna kerana kecuaiannya. Beberapa cadangan asas yang akan membantu mengurangkan dengan ketara risiko komputer anda dijangkiti oleh Trojan ini:

    • Muat turun program di Internet hanya dari tapak yang dipercayai. Jika aplikasi itu diedarkan secara bebas, lebih baik memuat turunnya dari tapak web pembangun;
    • Apabila memasang program, perhatikan semua "tanda semak" dalam pemasang. Selalunya di bawah " pemasangan penuh programs" pembangunnya memahami pemasangan aplikasi dengan perisian gabungan, yang boleh menjadi virus. Kami juga mengesyorkan agar anda berkenalan dengannya perjanjian pengguna, yang mungkin menunjukkan bahawa secara lalai ini atau program gabungan itu akan dipasang pada komputer;
    • Jangan muat turun program dari Internet daripada pemaju yang tidak diketahui yang menjanjikan fungsi yang luar biasa.

    Dengan mengikuti peraturan mudah yang diterangkan di atas, anda boleh mengurangkan dengan ketara risiko komputer anda dijangkiti virus Masa Membaca, yang boleh menyebabkan banyak masalah.

    Semua data dalam teknologi Web dihantar melalui protokol HTTP(Protokol Pemindahan Hiperteks). Pengecualian adalah pertukaran menggunakan pengaturcaraan Java atau pertukaran daripada aplikasi Plugin. Memandangkan jumlah trafik sebenar yang dihantar sebagai sebahagian daripada pertukaran Web melalui HTTP, kami hanya akan mempertimbangkan protokol ini. Dengan berbuat demikian, kami akan mempertimbangkan soalan seperti:

    Struktur mesej am

    HTTP ialah protokol lapisan aplikasi. Protokol ini tertumpu pada model pertukaran pelanggan-pelayan. Pertukaran berlaku dalam kepingan data yang dipanggil Mesej HTTP. Mesej yang dihantar dari klien ke pelayan dipanggil permintaan, dan mesej yang dihantar dari pelayan kepada klien dipanggil respons. Mesej boleh terdiri daripada dua bahagian: pengepala dan badan. Badan dipisahkan dari pengepala dengan garis kosong.

    Pengepala mengandungi maklumat perkhidmatan yang diperlukan untuk memproses badan mesej atau mengawal pertukaran. Pengepala terdiri daripada arahan pengepala, yang biasanya ditulis setiap satu pada baris baharu.

    Isi mesej adalah pilihan, tetapi pengepala mesej adalah. Ia mungkin mengandungi maklumat teks, grafik, audio atau video.

    Di bawah ialah permintaan HTTP:

    GET / HTTP/1.0 Terima: imej/jpeg [baris kosong]

    dan respons:

    HTTP/1.0 200 OK Tarikh: Jum, 24 Jul 1998 21:30:51 GMT Pelayan: Apache/1.2.5 Jenis kandungan: teks/html Panjang kandungan: 21345 [baris kosong] konteks halaman

    Teks "baris kosong" hanyalah untuk menunjukkan kehadiran baris kosong yang memisahkan pengepala mesej HTTP daripada badannya.

    Pelayan, menerima permintaan daripada klien, menukar sebahagian daripada maklumat pengepala permintaan HTTP ke pembolehubah persekitaran, yang tersedia untuk analisis oleh skrip CGI. Jika permintaan mempunyai badan, maka badan disediakan untuk skrip melalui aliran input standard.

    Kaedah Akses

    Arahan yang paling penting bagi permintaan HTTP ialah kaedah akses. Ia ditunjukkan sebagai perkataan pertama dalam baris pertama pertanyaan. Dalam contoh kami ini ialah GET. Terdapat empat kaedah akses utama:

    Sebagai tambahan kepada empat kaedah ini, terdapat kira-kira lima kaedah akses tambahan, tetapi ia jarang dilaksanakan dalam amalan.

    kaedah GET

    Kaedah GET digunakan oleh klien apabila membuat permintaan kepada pelayan secara lalai. Dengan kaedah ini, pelanggan menyampaikan alamat sumber (URL) yang ingin diterima, versi protokol HTTP, jenis dokumen MIME yang disokongnya dan versi serta nama perisian klien. Semua parameter ini dinyatakan dalam pengepala permintaan HTTP. Mayat tidak dihantar dalam permintaan.

    Sebagai tindak balas, pelayan melaporkan versi protokol HTTP, kod pulangan, jenis kandungan kandungan mesej, saiz badan mesej dan beberapa arahan pengepala HTTP pilihan lain. Sumber itu sendiri, biasanya halaman HTML, dihantar dalam badan respons.

    kaedah HEAD

    Kaedah HEAD digunakan untuk meminimumkan pertukaran apabila bekerja melalui protokol HTTP. Ia serupa dengan kaedah GET kecuali badan mesej tidak dihantar dalam respons. Kaedah ini digunakan untuk menyemak masa pengubahsuaian terakhir sumber, untuk menyemak tarikh tamat tempoh sumber cache, apabila menggunakan program pengimbasan sumber Dunia Wide Web. Ringkasnya, kaedah HEAD direka untuk meminimumkan jumlah maklumat yang dihantar melalui rangkaian sebagai sebahagian daripada pertukaran HTTP.

    kaedah POST

    Kaedah POST adalah alternatif kepada kaedah GET. Apabila bertukar data menggunakan kaedah POST, permintaan klien mengandungi badan mesej HTTP. Badan ini boleh dibentuk daripada data yang dimasukkan dalam bentuk HTML, atau daripada fail luaran yang dilampirkan. Respons biasanya mengandungi pengepala dan badan mesej HTTP. Untuk memulakan pertukaran menggunakan kaedah POST dalam atribut kaedah bekas bentuk nilai "siaran" hendaklah dinyatakan.

    kaedah PUT

    Kaedah PUT digunakan untuk menerbitkan halaman HTML ke direktori pelayan HTTP. Apabila menghantar data daripada klien ke pelayan, mesej mengandungi pengepala mesej, yang menunjukkan URL sumber dan badan - kandungan sumber yang dihoskan.

    Respons biasanya tidak menghantar badan sumber, tetapi pengepala mesej mengandungi kod pulangan yang menentukan sama ada peruntukan sumber berjaya atau tidak berjaya.

    Pengoptimuman pertukaran

    Protokol HTTP pada asalnya direka untuk menjadi protokol tanpa sambungan. Ini bermakna apabila pelayan telah menerima permintaan daripada klien dan membalasnya, sambungan antara klien dan pelayan terputus. Untuk pertukaran data baharu, sambungan baharu mesti diwujudkan. Pendekatan ini mempunyai kebaikan dan keburukan.

    Kelebihannya termasuk keupayaan untuk perkhidmatan serentak sejumlah besar pertanyaan ringkas. Malah pada pelayan popular bilangan sambungan terbuka mungkin tidak melebihi ratusan apabila melayani kira-kira sejuta permintaan setiap hari. Dalam kes ini, satu pelanggan boleh membuka sehingga 40 sambungan secara serentak, yang dari sudut pandangan pelayan adalah sama. Dengan talian komunikasi berkelajuan tinggi, ini memungkinkan untuk mencapai masa tindak balas yang singkat kepada permintaan pelanggan untuk keseluruhan halaman (teks, grafik, dll.).

    Kelemahan skim pertukaran ini termasuk: keperluan untuk mewujudkan sambungan untuk setiap pertukaran dan ketidakupayaan untuk mengekalkan sesi bekerja dengan sumber maklumat. Apabila memulakan sambungan oleh protokol pengangkutan TCP dan penamatan sambungan ini memerlukan pemindahan jumlah maklumat perkhidmatan yang agak besar. Kekurangan sokongan sesi dalam HTTP menyukarkan bekerja dengan sumber seperti pangkalan data atau sumber yang memerlukan pengesahan.

    Untuk mengoptimumkan bilangan sambungan TCP terbuka, protokol HTTP versi 1.0 dan 1.1 menyediakan mod kekal hidup. Dalam mod ini, sambungan dimulakan sekali sahaja dan beberapa pertukaran HTTP boleh dijalankan secara berurutan.

    Untuk melaksanakan sokongan sesi, "kuki" telah ditambahkan pada arahan pengepala HTTP. Mereka membenarkan anda untuk mensimulasikan sokongan sambungan apabila bekerja melalui protokol HTTP.

    Pengekodan permintaan GET dan POST.

    Terdapat dua jenis pengekodan permintaan HTTP. asas - urlencoded, aka pengekodan URL standard. Ruang diwakili sebagai %20, huruf Rusia dan kebanyakan aksara khas dikodkan, huruf Inggeris dan sempang dibiarkan seperti sedia ada.

    Cara data borang harus dikodkan apabila diserahkan dinyatakan dalam teg HTMLnya:

    // Kaedah GET dengan pengekodan lalai // enctype secara eksplisit menetapkan pengekodan // Kaedah POST dengan pengekodan lalai (urlencoded, seperti borang sebelumnya)

    Jika borang dihantar dengan cara biasa, maka penyemak imbas itu sendiri mengekod (urlencode) nama dan nilai setiap medan data (input, dll.) dan menghantar borang ke pelayan dalam bentuk yang dikodkan.

    Kaedah pengekodan kedua ialah tiada pengekodan. Sebagai contoh, tiada pengekodan diperlukan untuk memindahkan fail. Ia dinyatakan dalam borang (untuk POST sahaja) seperti ini:

    Dalam kes ini, tiada apa yang dikodkan semasa menghantar data ke pelayan. Dan pelayan, untuk bahagiannya, melihat "Jenis Kandungan: multipart/form-data", akan memahami apa yang telah tiba.

    Pengekodan data.

    Jika anda hanya menggunakan UTF-8, anda tidak memerlukan bahagian ini.

    Semua parameter GET/POST pergi ke pelayan, kecuali dalam kes multipart/form-data, dikodkan dalam UTF-8. Bukan dalam pengekodan halaman, tetapi dalam UTF-8. Oleh itu, sebagai contoh, dalam PHP mereka perlu dikod semula dengan fungsi iconv jika perlu.

    $nama = iconv("UTF8","CP1251",$_GET["nama"]);

    Penyemak imbas menerima respons daripada pelayan tepat dalam pengekodan yang dinyatakan dalam pengepala respons Jenis Kandungan. Iaitu, sekali lagi, dalam PHP, agar penyemak imbas menerima respons dalam windows-1251 dan biasanya memaparkan data pada halaman dalam windows-1251, anda perlu menghantar pengepala yang dikodkan dalam kod PHP, contohnya seperti ini:

    Header("Content-Type: text/plain; charset=windows-1251");

    Atau, pelayan mesti menambah pengepala sedemikian. Sebagai contoh, dalam apache pengekodan ditambah secara automatik dengan pilihan:

    # dalam konfigurasi Apache AddDefaultCharset windows-1251
    .