Penerangan ringkas tentang protokol HTTP. Ralat http yang paling biasa dan cara membetulkannya

Ralat "http" mungkin berlaku. Ramai orang kemudian mula menganalisis mereka tindakan terkini, dihasilkan dalam WordPress, tetapi kebanyakan orang tidak tahu apa yang berlaku, kerana tiada apa yang "buruk" nampaknya telah dilakukan. Jika anda melihat jawapan di Internet kepada soalan "mengapa ia memberikan ralat http semasa memuatkan imej," anda boleh menemui beberapa cadangan yang boleh menghapuskan ralat ini.

Pengesyoran untuk membantu menyelesaikan ralat semasa memuat turun imej "http"

Cadangan pertama ialah melihat keseluruhan senarai pemalam yang dipasang dan lumpuhkan semua yang tidak perlu. Anda juga perlu melumpuhkan semua pemalam dan mendayakannya satu demi satu, dan kemudian menonton kesan kerja mereka di tapak anda. Oleh itu, memuat naik foto mungkin berfungsi, tetapi adalah jauh dari pasti bahawa anda akan dapat mengesan dengan tepat pemalam yang membuang ralat. Jika anda mempunyai masa dan kesabaran, cuba cadangan ini, tetapi kami mendapati ia terlalu menyusahkan, jadi kami meninggalkan pilihan ini sebagai simpanan.

Cadangan kedua menyatakan bahawa keseluruhan masalah mungkin terletak pada pelayan di mana tapak anda berada. Tetapi jika anda mempunyai tapak lain yang berfungsi dengan hoster ini, dan semuanya baik-baik saja dengan mereka dalam susunan yang sempurna, yang bermaksud ralat terletak di suatu tempat di tapak itu sendiri. Sekiranya terdapat hanya satu tapak, hubungi hoster, sekiranya masalahnya benar-benar terletak di sana.

Di sini kami juga ambil perhatian bahawa tidak selalu rasional untuk mengemas kini kepada versi yang baru dikeluarkan.

Sebagai peraturan, ia mengandungi banyak inovasi/kemas kini yang berguna, tetapi tidak semua pembangun pemalam mempunyai masa untuk membuat pelarasan pada produk mereka. Iaitu, jika semuanya baik-baik saja dengan anda sekarang, maka tidak ada gunanya tergesa-gesa untuk mengemas kini enjin.

Petua keempat ialah menambah kod berikut pada fail .htaccess:

SecFilterEngine Mati
SecFilterScanPOST Mati

Kod di atas mesti diletakkan di hujung atau permulaan fail, selepas itu semuanya boleh mula berfungsi.
Petua seterusnya ialah memasukkan kod ke dalam fail .htaccess menggunakan pemuat naik FTP:



SecFilterEngine Mati
SecFilterScanPOST Mati

Ambil perhatian bahawa jika anda sudah mempunyai kod sedemikian dalam fail, maka anda perlu menulis semula, iaitu, menggantikannya dengan yang baru. Cuba muat turun fail media sekarang; Selain itu, anda boleh memuat naik fail dalam kuantiti tanpa had. Kami telah berulang kali menyedari bahawa dalam satu kes, jika anda menampal kod pada permulaan fail, semuanya akan berfungsi; apabila menampal kod pada tapak lain pada permulaan fail, tiada apa yang berjaya, tetapi semuanya mula berfungsi sebaik sahaja kod itu dialihkan ke penghujung fail.

Perlu diingat bahawa selepas mengemas kini WordPress fail ini boleh ditimpa dengan mudah dan ralat mungkin berlaku lagi. Untuk mengelakkan perkara ini daripada berlaku, kami mengesyorkan anda menyimpan fail sandaran ke komputer anda dan, jika sesuatu berlaku, muat naiknya ke pelayan melalui FTP.

Cadangan lain ialah memasang pemalam WPupload, yang menggantikan pemuat naik WordPress lalai dengan yang baharu (ia menyokong HTML5, Flash, BrowserPlus, dll.). Walau bagaimanapun, pemalam baharu boleh menambah masalah baru pada tapak, tetapi, dalam apa jua keadaan, ia akan menghapuskan ralat ini apabila memuatkan imej "http".

Daripada semua perkara di atas, kesimpulan mudah berikut: jika anda mahu tapak anda berfungsi dengan stabil, jangan tergesa-gesa dengan . Versi baharu walaupun ia menjanjikan untuk menjadi lebih berfungsi dan selamat, ia pemaju pihak ketiga Mereka tidak selalu mempunyai masa untuk mengoptimumkan produk mereka untuk versi baharu (inilah sebabnya ralat "http" mungkin muncul).

Kadangkala situasi timbul apabila pelayar web memaparkan ralat semasa meminta tapak. Kesilapan sedemikian ada kod digital dan penerangan khusus.

(101-199) Jawapan bermaklumat

Respons sedemikian menunjukkan bahawa permintaan daripada pelanggan tertentu telah diterima dan sedang diproses secara langsung.

  • 100 - Teruskan - bahagian pertama permintaan telah diterima, pelanggan boleh meneruskan penghantarannya.
  • 101 - Menukar Protokol - perkhidmatan memenuhi keperluan pelanggan tertentu, dan juga menukar protokol, yang sepadan dengan data dalam medan pengepala Naik Taraf.

(200-299) Permintaan yang berjaya pelanggan

Dalam julat ini, semua permintaan pelanggan berjaya diselesaikan.

  • 200 - OK - pemprosesan permintaan klien berjaya, dan respons pelayan mengandungi semua data yang diminta.
  • 201 - Dicipta - kod status ini boleh digunakan apabila menukar URL. Selain kod, pelayan juga mengeluarkan pengepala Lokasi, yang mengandungi semua maklumat tentang lokasi semua data baharu yang dialihkan.
  • 202 - Diterima - permintaan diterima, tetapi ia tidak diproses serta-merta. Badan kandungan respons juga mungkin mengandungi maklumat tertentu tentang transaksi. Tiada jaminan bahawa permintaan akan diberikan, walaupun ia sah pada masa kemasukan.
  • 203 - Maklumat Tidak Berwibawa - Pengepala kandungan mengandungi maklumat yang diperoleh daripada salinan tempatan atau daripada pihak ketiga.
  • 204 - Tiada Kandungan - respons hanya mengandungi pengepala dan kod status, badan respons itu sendiri tidak diberikan. Apabila respons sedemikian diterima, dokumen penyemak imbas tidak boleh dimuat semula. Kod boleh kembali semula selepas pengguna mengklik pada kawasan kosong imej.
  • 205 - Tetapkan Semula Kandungan - borang yang digunakan untuk data input tambahan dikosongkan oleh penyemak imbas.
  • 206 - Kandungan Separa - pelayan hanya mengembalikan sebahagian daripada data. Digunakan dalam respons permintaan apabila menentukan pengepala Julat. Pelayan mesti menunjukkan dalam pengepala Julat Kandungan julat tertentu, yang termasuk dalam jawapan.

(300-399) Pemajuan

Kod respons dalam julat ini bermakna pelanggan mesti melakukan tindakan tertentu untuk memenuhi permintaan.

  • 300 - Pelbagai Pilihan (beberapa pilihan untuk dipilih) - URL yang diminta mungkin termasuk beberapa sumber. Badan kandungan yang dikembalikan oleh pelayan mesti mengandungi maklumat tertentu tentang membuat pilihan yang tepat sumber.
  • 301 - Dipindah Secara Kekal (sumber dipindahkan ke asas kekal) - pelayan tidak lagi menggunakan URL yang diperlukan, oleh itu operasi yang dinyatakan dalam permintaan tidak dilakukan. Pengepala Lokasi memberikan maklumat tentang lokasi baharu dokumen yang diminta. Permintaan seterusnya mesti menyatakan URL baharu.
  • 302 - Dialihkan Sementara (sumber dialihkan buat sementara waktu) - pergerakan sementara URL yang diminta. Pengepala Lokasi menentukan lokasi baharu. Selepas menerima kod status, pelanggan mesti menyelesaikan permintaan menggunakan URL baharu, tetapi kemudian menggunakan URL lama sahaja.
  • 303 - Lihat Lain (lihat sumber lain) - carian untuk URL yang diminta dijalankan dengan menentukan URL lain, yang terletak dalam pengepala Lokasi.
  • 304 - Not Modified - ialah kod respons kepada pengepala lf-Modified-Since jika URL tidak berubah. Badan kandungan tidak ada, jadi pelanggan mesti menggunakan salinan tempatannya.
  • 305 - Gunakan Proksi (gunakan pelayan proksi) - sumber yang diminta mesti diakses melalui pelayan proksi, yang dinyatakan dalam medan Lokasi. Medan ini juga mengandungi URL pelayan proksi yang diperlukan. Permintaan mesti diulang kepada penerima.

(400-499) Permintaan pelanggan tidak lengkap

Kod respons dalam julat ini menunjukkan bahawa permintaan pelanggan tidak lengkap. Ia juga mungkin bermakna bahawa pelanggan perlu memasukkan maklumat tambahan.

  • 400 - Permintaan buruk(permintaan salah) - pelayan tidak memahami permintaan kerana sintaks yang salah. Permintaan boleh diulang, tetapi hanya selepas pengubahsuaian tertentu telah dibuat.
  • 401 - Tanpa kebenaran (tiada kebenaran) - pengguna mesti mengesahkan kesahihannya. Respons mesti mengandungi medan pengepala WWW-Authenticate dengan cabaran yang digunakan pada sumber yang diminta. Permintaan boleh diulang, tetapi dengan medan pengepala Kebenaran yang sesuai. Jika medan ini sudah mengandungi pengesyoran pengesahan, kod status 401 menunjukkan bahawa pengesyoran tersebut tidak sesuai untuk pengesahan.
  • 402 - Pembayaran Diperlukan - Kod ini dikhaskan dan akan digunakan pada masa hadapan, tetapi ia belum lagi dilaksanakan dalam HTTP.
  • 403 - Dilarang (akses ditolak) - permintaan ditolak, jadi pelayan tidak dapat bertindak balas kepada pelanggan.
  • 404 - Tidak ditemui(sumber tidak ditemui) - URL yang ditentukan tidak lagi wujud dokumen yang diperlukan, iaitu, pelayan tidak menemui apa-apa yang boleh sepadan dengan permintaan ini.
  • 405 - Kaedah Tidak Dibenarkan - Pengepala Allow menunjukkan bahawa kaedah yang digunakan oleh klien tidak disokong.
  • 406 - Tidak Boleh Diterima - Sumber yang dikenal pasti hanya boleh menjana objek dengan ciri kandungan yang tidak sepadan dengan pengepala terima.
  • 407 - Pengesahan Proksi Diperlukan (pendaftaran dengan pelayan proksi diperlukan) - menunjukkan keperluan untuk mengesahkan klien kepada pelayan proksi. Pelayan proksi mengembalikan medan pengepala Proxy-Authenticate yang mengandungi cabaran khusus. Permintaan boleh diulang, tetapi hanya jika medan pengepala yang sesuai ditentukan.
  • 408 - Permintaan Tamat (masa pemprosesan permintaan telah tamat) - permintaan tidak dilengkapkan oleh klien semasa pelayan menunggu. Permintaan itu boleh diulang kemudian.
  • 409 - Konflik - Permintaan tidak dapat diproses kerana terdapat konflik dengan keadaan sumber. Pengguna dijangka menyelesaikan konflik dan menyerahkan semula permintaan.
  • 410 - Hilang (sumber tidak lagi wujud) - URL yang diminta tidak lagi tersedia pada pelayan.
  • 411 - Panjang Diperlukan (panjang mesti dinyatakan) - permintaan tidak diterima oleh pelayan kerana Panjang Kandungan tidak ditentukan. Permintaan boleh diulang dengan menentukan panjang badan mesej dalam medan pengepala Panjang Kandungan.
  • 412 - Prasyarat Gagal - Permintaan tidak diproses oleh pelayan kerana objek permintaan adalah lebih besar daripada yang boleh dikendalikan. Dalam keadaan ini, adalah mungkin untuk menutup sambungan. Jika keadaan ini bersifat sementara, maka pelayan menentukan masa dalam pengepala Cuba Semula Selepas yang mana klien boleh mencuba lagi.
  • 413 - Entiti Minta Terlalu Besar (elemen yang diminta terlalu besar) - permintaan tidak diproses oleh pelayan kerana saiznya yang besar.
  • 414 - Request-URI Terlalu Panjang (pengecam sumber dalam permintaan terlalu panjang) - permintaan tidak diproses oleh pelayan kerana URLnya agak panjang.
  • 415 - Jenis Media Tidak Disokong (jenis peranti tidak disokong) - pelayan enggan melayan permintaan kerana sumber yang diminta tidak menyokong format objek permintaan.

(500-599) Ralat pelayan

Julat ini menunjukkan bahawa permintaan kemungkinan besar akan gagal kerana pelayan mengalami ralat tertentu.

  • 500 - Dalaman Ralat Pelayan (Masalah dalaman pelayan) - Semasa memproses permintaan, salah satu komponen pelayan mengalami ralat konfigurasi tertentu.
  • 501 - Tidak Dilaksanakan (fungsi tidak dilaksanakan) - permintaan klien tidak dapat dipenuhi kerana permintaan memerlukan sokongan untuk beberapa kefungsian. Mungkin dikeluarkan apabila pelayan tidak dapat mengenali kaedah permintaan.
  • 502 - Gerbang Buruk(kecacatan pintu masuk) - pelayan, apabila bekerja sebagai pelayan proksi, menerima respons yang tidak sah dalam rantaian permintaan daripada pelayan seterusnya.
  • 503 - Perkhidmatan Tidak Tersedia - Perkhidmatan tidak tersedia buat sementara waktu, tetapi akses boleh diteruskan selepas beberapa ketika. Jika pelayan mempunyai data tertentu, ia boleh mengeluarkan respons dengan pengepala Cuba Semula Selepas.
  • 504 - Gateway Timeout (masa yang melalui gateway telah tamat tempoh) - gateway atau server telah melebihi had masa.
  • 505 - Versi HTTP Tidak Disokong ( versi tidak disokong HTTP) - versi tidak disokong oleh pelayan protokol HTTP, yang digunakan dalam permintaan.

HTTP ( Pemindahan HyperTeks Protokol - Hypertext Transfer Protocol) telah dibangunkan sebagai asas Seluruh Dunia Web.

Protokol HTTP berfungsi seperti berikut: program klien mewujudkan sambungan TCP dengan pelayan ( Bilik standard port-80) dan mengeluarkan permintaan HTTP kepadanya. Pelayan memproses permintaan ini dan mengeluarkan respons HTTP kepada klien.

Struktur permintaan HTTP

Permintaan HTTP terdiri daripada pengepala permintaan dan badan permintaan, dipisahkan oleh baris kosong. Badan permintaan mungkin tiada.

Pengepala permintaan terdiri daripada baris utama (pertama) permintaan dan baris berikutnya yang menjelaskan permintaan dalam baris utama. Baris seterusnya mungkin juga tiada.

Pertanyaan baris utama terdiri daripada tiga bahagian, dipisahkan oleh ruang:

Kaedah(dengan kata lain, arahan HTTP):

DAPATKAN- permintaan dokumen. Kaedah yang paling biasa digunakan; dalam HTTP/0.9, mereka berkata, dia adalah satu-satunya.

KEPALA- permintaan tajuk dokumen. Ia berbeza daripada GET kerana hanya pengepala permintaan dengan maklumat tentang dokumen dikembalikan. Dokumen itu sendiri tidak dikeluarkan.

POS- kaedah ini digunakan untuk memindahkan data ke skrip CGI. Data itu sendiri muncul dalam baris permintaan berikutnya dalam bentuk parameter.

LETAK- letakkan dokumen pada pelayan. Setahu saya, ia jarang digunakan. Permintaan dengan kaedah ini mempunyai badan di mana dokumen itu sendiri dihantar.

Sumber- ini adalah cara untuk fail tertentu pada pelayan yang pelanggan ingin terima (atau letakkan - untuk kaedah PUT). Jika sumber itu hanyalah beberapa fail untuk dibaca, pelayan mesti mengembalikannya dalam badan respons untuk permintaan ini. Jika ini adalah laluan kepada skrip CGI, maka pelayan menjalankan skrip dan mengembalikan hasil pelaksanaannya. Dengan cara ini, terima kasih kepada penyatuan sumber ini, pelanggan boleh dikatakan tidak peduli dengan apa yang dia wakili pada pelayan.

Versi protokol-versi protokol HTTP yang digunakan oleh program klien.

Jadi permintaan HTTP mudah mungkin kelihatan seperti ini:

Ini meminta fail akar daripada direktori akar pelayan web.

Baris selepas baris pertanyaan utama mempunyai format berikut:

Parameter: nilai.

Beginilah cara parameter permintaan ditetapkan. Ini adalah pilihan; semua baris selepas baris pertanyaan utama mungkin tiada; dalam kes ini, pelayan menerima nilainya secara lalai atau berdasarkan keputusan permintaan sebelumnya (apabila bekerja dalam mod Keep-Alive).

Saya akan menyenaraikan beberapa parameter permintaan HTTP yang paling biasa digunakan:

Sambungan(sambungan) - boleh mengambil nilai Keep-Alive dan dekat. Keep-Alive bermaksud bahawa selepas mengeluarkan dokumen ini, sambungan ke pelayan tidak terputus, dan lebih banyak permintaan boleh dikeluarkan. Kebanyakan penyemak imbas berfungsi dalam mod Keep-Alive, kerana ia membolehkan anda "memuat turun" halaman html dan imej untuknya dalam satu sambungan ke pelayan. Setelah ditetapkan, mod Keep-Alive dikekalkan sehingga ralat pertama atau sehingga Sambungan seterusnya: permintaan tutup dinyatakan dengan jelas.
tutup ("tutup") - sambungan ditutup selepas menjawab permintaan ini.

Ejen Pengguna- nilainya ialah "kod" penyemak imbas, contohnya:

Mozilla/4.0 (serasi; MSIE 5.0; Windows 95; DigExt)

Terima- senarai jenis kandungan yang disokong oleh penyemak imbas mengikut keutamaan mereka untuk penyemak imbas tertentu, contohnya untuk IE5 saya:

Terima: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

Ini jelas diperlukan untuk kes apabila pelayan boleh mengeluarkan dokumen yang sama dalam format yang berbeza.

Nilai parameter ini digunakan terutamanya oleh skrip CGI untuk menjana respons yang disesuaikan untuk penyemak imbas tertentu.

perujuk- URL dari mana anda datang ke sumber ini.

hos- nama hos dari mana sumber itu diminta. Berguna jika pelayan mempunyai beberapa pelayan maya di bawah alamat IP yang sama. Dalam kes ini nama pelayan maya ditentukan oleh bidang ini.

Terima-Bahasa- bahasa yang disokong. Penting untuk pelayan yang mungkin menyediakan dokumen yang sama dalam versi bahasa yang berbeza.

Format respons HTTP

Format respons sangat serupa dengan format permintaan: ia juga mempunyai pengepala dan badan yang dipisahkan oleh baris kosong.

Pengepala juga terdiri daripada baris utama dan baris parameter, tetapi format baris utama adalah berbeza daripada pengepala permintaan.

Rentetan pertanyaan utama terdiri daripada 3 medan yang dipisahkan oleh ruang:

Versi protokol- serupa dengan parameter permintaan yang sepadan.

Kod salah- penetapan kod "kejayaan" permintaan. Kod 200 bermaksud "semuanya normal" (OK).

Penerangan lisan tentang kesilapan- "menyahtafsir" kod sebelumnya. Sebagai contoh, untuk 200 adalah OK, untuk 500 - Pelayan Dalaman ralat.

Parameter respons http yang paling biasa:

Sambungan- serupa dengan parameter permintaan yang sepadan.
Jika pelayan tidak menyokong Keep-Alive (ada beberapa), maka nilai Sambungan dalam respons sentiasa dekat.

Oleh itu, pada pendapat saya, taktik penyemak imbas yang betul adalah seperti berikut:
1. isu Sambungan: Keep-Alive dalam permintaan;
2. Status sambungan boleh dinilai oleh medan Sambungan dalam respons.

Jenis kandungan(“jenis kandungan”) - mengandungi penetapan jenis kandungan respons.

Bergantung pada nilai Jenis Kandungan, penyemak imbas mentafsirkan respons sebagai halaman HTML, gambar gif atau jpeg, sebagai fail untuk disimpan ke cakera, atau apa sahaja, dan mengambil tindakan yang sewajarnya. Nilai Jenis Kandungan untuk penyemak imbas adalah sama dengan nilai sambungan fail untuk Windows.

Beberapa jenis kandungan:

teks/html - teks dalam format HTML (halaman web);
teks/plain - teks biasa (serupa dengan Notepad);
imej/jpeg - gambar dalam format JPEG;
imej/gif - sama, dalam format GIF;
application/oktet-strim - aliran "oktet" (iaitu hanya bait) untuk menulis ke cakera.

Sebenarnya ada banyak lagi jenis kandungan.

Panjang Kandungan("panjang kandungan") - panjang kandungan respons dalam bait.

Terakhir Diubah Suai("Diubah suai kepada kali terakhir") - Tarikh peluang terakhir dokumen.

Sehubungan dengan peralihan besar-besaran tapak kepada HTTPS, pembangun dan pentadbir tapak menghadapi beberapa masalah baharu. Salah satu daripadanya ialah ubah hala daripada HTTP ke HTTPS dan keperluan untuk mengendalikan ubah hala ke alamat tapak berkanun dengan betul untuk mengelakkan kandungan pendua.

HTTPS dan ubah hala

Mari kita lihat contoh. Katakan kita mempunyai tapak web dnsimple.com. Kanoniknya URL - https://dnsimple.com. Walau bagaimanapun, terdapat empat cara yang berbeza, yang dengannya anda boleh menyambung ke tapak, dan anda perlu memastikan bahawa dengan mana-mana daripadanya pengguna dialihkan ke https://dnsimple.com:

Kaedah asal taip
http://dnsimple.com HTTP + tiada-www
https://dnsimple.com HTTPS + tiada-www
http://www.dnsimple.com HTTP + www
https://www.dnsimple.com HTTPS + www

Mengkonfigurasi ubah hala htaccess daripada HTTP ke HTTPS selalunya menjadi punca kekeliruan. Tidak selalunya jelas cara memproses ubah hala dengan betul dari WWW ke bukan WWW (atau sebaliknya) melalui HTTPS, dan mengapa ini memerlukan Sijil SSL/TLS. Untuk mengkonfigurasi ubah hala ini dengan betul, anda perlu memahami prinsip asas pemprosesan permintaan HTTPS.

Seterusnya, kami akan melihat susunan sambungan diwujudkan melalui protokol HTTPS, cara permintaan HTTP diproses dan menyediakan ubah hala dengan sokongan HTTPS.

Aliran permintaan HTTPS

Imej di atas menunjukkan carta aliran permintaan/tindak balas HTTPS. Untuk kesederhanaan, kami telah membahagikan semua tindakan kepada tiga fasa:

  1. Pada peringkat pertama, pelanggan dan pelayan bersetuju dengan butiran penyulitan, seperti protokol penyulitan dan suite sifir. Maklumat yang diperlukan untuk bertukar kepada sambungan selamat juga berlaku: kunci awam, maklumat sijil, dsb. Fasa ini dipanggil " Jabat tangan SSL/TLS»;
  2. Pada peringkat kedua, pelanggan menyediakan permintaan HTTP, menyulitkannya dan menghantarnya ke pelayan untuk diproses. Pelayan menerima permintaan HTTP yang disulitkan, menyahsulitnya, memprosesnya dan mengeluarkan respons HTTP (tindak balas);
  3. Pada peringkat ketiga, pelayan menyulitkan respons dan menghantarnya kepada pelanggan untuk diproses. Pelanggan menerima respons HTTP yang disulitkan, menyahsulit dan memprosesnya ( sebagai contoh, pelayar mula memuatkan dan memaparkan elemen).

Gambar rajah aliran ubah hala HTTP ke HTTPS ini digunakan untuk sebarang permintaan, tanpa mengira kandungan respons HTTP.

Di atas saya tulis Permintaan HTTP dan respons HTTP untuk tujuan tertentu ( ambil perhatian bahawa saya menggunakan HTTP dan bukan HTTPS). Dari segi kandungan dan struktur, adalah penting untuk memahami bahawa permintaan HTTPS ialah permintaan HTTP, tetapi dihantar melalui sambungan selamat ( TLS/SSL).

Perundingan HTTPS dan ubah hala

Salah satu kesilapan yang paling biasa semasa menyediakan ubah hala HTTPS ialah mengandaikan bahawa anda tidak memerlukan sijil SSL apabila mengubah hala pelanggan dari satu domain ke domain yang lain.

Jika anda melihat aliran permintaan, anda dapat melihat bahawa pertukaran sijil SSL dan rundingan penyulitan dilakukan pada peringkat pertama. Ambil perhatian bahawa pada peringkat ini pelayan tidak tahu halaman apa yang diperlukan oleh klien: klien dan pelayan memutuskan cara untuk berinteraksi antara satu sama lain.

Selepas selesai peringkat pertama, apabila pelanggan dan pelayan telah menemui bahasa bersama (protokol penyulitan), mereka boleh mula berkomunikasi antara satu sama lain menggunakan sambungan yang disulitkan. Pada ketika ini, pelanggan menghantar permintaan HTTP kepada pelayan, dan pelayan menghantar respons HTTP yang mengandungi ubah hala.

Jangan lupa bahawa ubah hala ialah respons HTTP dengan kod 301 (kadang-kadang 302 atau 307):

HTTP/1.1 301 Dialihkan Secara Kekal Pelayan: nginx Tarikh: Isn, 01 Ogos 2016 14:41:25 GMT Lokasi: https://dnsimple.com/

Sebelum anda membuat ubah hala daripada HTTPS ke HTTP, ingat bahawa jika anda perlu membuat ubah hala untuk keseluruhan domain, anda memerlukan sijil SSL yang sah untuk domain diubah hala. Rundingan penyulitan memerlukan sijil SSL dan berlaku sebelum permintaan diproses dan respons ubah hala dikembalikan kepada pelanggan.

Jika perkara telah berlaku secara berbeza, ubah hala akan diproses sebelum menyemak sijil SSL. Pelanggan dan pelayan kemudiannya akan dipaksa untuk berkomunikasi menggunakan sambungan HTTP biasa, yang tidak disulitkan.

Jika anda perlu mengubah hala klien daripada mana-mana halaman dalam domain https://www.example.com kepada yang lain, anda memerlukan sijil SSL yang sah dipasang pada pelayan, yang digunakan untuk keseluruhan domain www.example.com.

Contohnya, untuk mengubah hala pelanggan dari https://www.example.com ke https://example.com, anda mesti mempunyai sijil yang meliputi kedua-dua atau dua sijil berasingan ( untuk setiap hos masing-masing).

Strategi ubah hala HTTPS

Kami melihat bagaimana ubah hala daripada HTTP ke HTTPS diproses melalui htaccess selepas rundingan SSL / TLS. Kami juga mendapati bahawa untuk mengubah hala pelanggan dari tapak atau halaman ke HTTPS, anda memerlukan sijil SSL yang sah yang meliputi kedua-dua domain. Seterusnya saya akan bercakap tentang strategi umum Tetapan ubah hala HTTPS.

Terdapat dua jenis menyediakan ubah hala dengan HTTPS:

  1. Ubah hala pada peringkat pelayan;
  2. Ubah hala pada peringkat aplikasi.

Istilah pelayan merujuk kepada mana-mana pelayan yang terletak di hadapan aplikasi web dan memproses permintaan HTTP yang masuk. Contohnya, pelayan bahagian hadapan, pelayan pengimbangan beban atau satu aplikasi.

Istilah aplikasi menandakan aplikasi web, yang boleh sama ada semudah skrip PHP atau lebih kompleks, seperti aplikasi Unicorn sebelah pelayan yang mentafsir Ruby on Rails.

Melakukan ubah hala HTTPS pada peringkat pelayan

Melakukan ubah hala HTTPS pada peringkat pelayan adalah lebih baik. Dalam kes ini, pelayan yang memasang sijil SSL menerima permintaan HTTP yang disulitkan dan mengembalikan respons ubah hala HTTP yang disulitkan mengikut parameter konfigurasi, tanpa menyambung ke pelayan aplikasi atau melaksanakan kod aplikasi.


Pendekatan ini lebih pantas kerana pelayan boleh mengendalikan ubah hala tanpa berinteraksi dengan aplikasi. Pada masa yang sama, konfigurasi pelayan kurang fleksibel daripada apa yang boleh dilakukan menggunakan bahasa pengaturcaraan yang lengkap.
htaccess ubah hala HTTP pada HTTPS pada peringkat pelayan digunakan untuk ubah hala pukal. Contohnya, ubah hala daripada WWW kepada versi bukan WWW domain dengan HTTPS (atau sebaliknya).

Coretan kod berikut ialah contoh Konfigurasi Nginx, yang menentukan ubah hala daripada http://example.com, http://www.example.com dan https://www.example.com ke https://example.com:

pelayan ( listen 80; server_name example.com www.example.com; return 301 https://example.com$request_uri; ) pelayan ( listen 443 ssl; server_name example.com www.example.com; # ssl configuration ssl on; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; jika ($http_host = www.example.com) ( return 301 https://example.com$request_uri; ) )

Melaksanakan ubah hala pada peringkat pelayan adalah lebih baik, tetapi ia tidak selalu boleh dilaksanakan kerana anda mungkin tidak mempunyai akses kepada konfigurasi pelayan. Ini terpakai pada pengehosan kongsi atau platform seperti Heroku, Azure atau Google Platform.

Melakukan ubah hala HTTPS pada peringkat aplikasi

Apabila anda tidak mempunyai akses kepada konfigurasi pelayan, atau logik ubah hala adalah lebih kompleks, anda perlu mengendalikan ubah hala HTTP ke HTTPS pada peringkat aplikasi.


Pendekatan ini sedikit perlahan kerana pelayan mesti menerima permintaan, memproses kod aplikasi ( atau berinteraksi dengan pelayan aplikasi) dan kembalikan respons.

Cara pengalihan semula dilakukan pada peringkat aplikasi bergantung pada bahasa pengaturcaraan dan tindanan yang digunakan. Berikut adalah beberapa contoh.

Pakej Goland dan net/http

Anda boleh menggunakan http.Redirect.

Ruby on Rails

Anda boleh mengkonfigurasi ubah hala pada peringkat penghala, gunakan perantaraan perisian Rak atau redirect_to kaedah di dalam pengawal:

kekangan(hos: /www.example.com/) dapatkan "*", ke: redirect("https://example.com") tamat

PHP

Gunakan fungsi pengepala untuk menghantar pengepala ubah hala HTTP:

Dalam sesetengah kes ini adalah satu-satunya pendekatan yang mungkin. Sebagai contoh, jika anda perlu mengubah hala pelanggan dari WWW ke versi domain bukan WWW, daripada HTTPS ke Heroku atau Azure (atau sebaliknya), maka anda perlu menentukan kedua-dua domain dalam satu aplikasi, memasang sijil dan proses ubah hala di peringkat permohonan melalui syarat.

Cara alternatif untuk melakukan ubah hala HTTPS

Terdapat beberapa cara alternatif ubah hala dari HTTP ke HTTPS.

Dalam sesetengah situasi, tiada akses kepada konfigurasi pelayan, dan platform di mana tapak dihoskan tidak membenarkan penggunaan bahasa pengaturcaraan. Sebagai contoh tipikal Anda boleh menggunakan Amazon S3 untuk mengehos tapak statik. Dalam kes ini, anda perlu mengetahui sama ada platform menyediakan parameter ubah hala HTTPS yang boleh anda konfigurasikan.

Pilihan lain ialah menggunakan aplikasi ubah hala bebas yang tersendiri. Contohnya, jika anda perlu mengubah hala pelanggan dari https://alpha.com ke https://beta.com. Kemudian untuk domain alpha.com anda boleh menentukan perkhidmatan atau pelayan pengehosan beta.com yang lain sebagai DNS. Anda juga boleh menyediakan ubah hala di peringkat pelayan atau memasang aplikasi yang akan bertindak sebagai pengarah semula. Dalam kes ini, anda juga memerlukan sijil yang sah untuk alpha.com, yang akan dipasang di mana ubah hala perlu dijalankan.

Bar alamat dalam penyemak imbas selalunya tidak menarik perhatian melainkan anda perlu mengikuti pautan yang disalin dari suatu tempat ke papan keratan. Kadangkala kami melihat ke sana untuk memastikan peralihan adalah betul, terutamanya dalam kes dengan ubah hala yang cepat dan tidak jujur. Tetapi jika kita lihat, kadangkala kita perasan keadaan luar biasa: terdapat beberapa jenis gembok tergantung, warna fon berbeza, dan atas sebab tertentu bukannya http:// biasa kita lihat https://. Tidak mustahil untuk segera memahami sama ada ia telah dibawa pergi ke suatu tempat, atau sesuatu di dunia telah berubah, atau sama ada ingatan itu gagal. Mari cuba fikirkan.

Definisi

HTTPprotokol aplikasi penghantaran data yang digunakan untuk mendapatkan maklumat daripada laman web.

HTTPS- Sambungan protokol HTTP yang menyokong penyulitan oleh protokol SSL dan TLS.

Perbandingan

Perbezaan antara HTTP dan HTTPS sudah ketara dari definisi. HTTPS bukan protokol pemindahan data bebas, tetapi HTTP dengan alat tambah penyulitan. Ini adalah kunci dan satu-satunya perbezaan. Jika mengikut protokol data HTTP dihantar tanpa perlindungan, maka HTTPS akan menyediakan perlindungan kriptografi. Ini digunakan di mana kebenaran bertanggungjawab: di tapak sistem pembayaran, perkhidmatan pos, dalam rangkaian sosial.

Jika data tidak dilindungi melalui SSL, maka program pemintas yang dilancarkan pada masa yang salah membolehkan penyerang menggunakannya. Secara teknikal, pelaksanaan HTTPS agak lebih rumit: untuk ini, tapak yang dilindungi mesti mempunyai sijil pelayan yang sedang digunakan, yang pengguna terima atau tidak terima. Sijil ini dipasang pada pelayan yang memproses sambungan. Kedua-dua data yang diterima oleh pelanggan dan data yang diterima daripadanya disulitkan. Kunci penyulitan digunakan untuk mengesahkan bahawa klien yang betul menerima dan menyediakannya.

Satu lagi perbezaan teknikal— dalam port yang digunakan untuk akses melalui protokol HTTP dan HTTPS. Yang pertama biasanya berinteraksi dengan port 80, yang kedua dengan port 443. Pentadbir boleh membuka port lain untuk tujuan yang sama, tetapi ia tidak akan sepadan.

Laman web Kesimpulan

  1. HTTP ialah protokol pemindahan data itu sendiri, HTTPS ialah lanjutan daripada protokol ini.
  2. HTTPS digunakan untuk komunikasi yang disulitkan.
  3. HTTPS juga digunakan untuk kebenaran pada pelayan yang memerlukan peningkatan perhatian kepada keselamatan data.
  4. HTTP berfungsi pada port 80, HTTPS pada port 443.