JavaRush /Blog Java /Random-MS /Bahagian 3. Protokol HTTP/HTTPS

Bahagian 3. Protokol HTTP/HTTPS

Diterbitkan dalam kumpulan
Bahan ini adalah sebahagian daripada siri "Pengenalan kepada Pembangunan Perusahaan". Artikel sebelumnya: hello! Hari ini kita akan memahami protokol HTTP dan HTTPS. Tetapi pertama, mari kita jelaskan satu perkara: kita bercakap tentang protokol pemindahan data melalui rangkaian pada lapisan aplikasi model OSI. Seperti yang anda ingat, kami membincangkan model OSI dalam salah satu artikel sebelumnya. Dan jika anda tidak ingat, inilah dia . Bahagian 3. Protokol HTTP/HTTPS - 1

Apakah itu protokol pemindahan data

Ini adalah nama yang diberikan kepada perjanjian yang diterima umum, terima kasih kepada pembangun perkhidmatan yang berbeza menghantar maklumat dalam satu bentuk. Contohnya, menggunakan Google Chrome, anda boleh mendapatkan maklumat daripada Facebook dan Twitter, kerana pembangun menghantarnya menggunakan protokol HTTP standard, dan penyemak imbas anda boleh mengendalikannya. Peraturan seragam juga sangat mudah untuk pembangun bahagian pelayan itu sendiri: terdapat banyak perpustakaan yang boleh menukar maklumat untuk anda dan menghantarnya menggunakan protokol yang diperlukan. HTTP pada asalnya dianggap sebagai protokol untuk memindahkan halaman HTML. Ini berlaku untuk masa yang lama, tetapi kini pengaturcara sering memindahkan kedua-dua rentetan dan fail media ke atasnya. Secara keseluruhan, protokol ini serba boleh dan fleksibel, dan ia sangat mudah digunakan. Sekarang mari kita fikirkan bagaimana untuk melakukan ini.

Struktur HTTP

Perlu diperhatikan dengan segera bahawa protokol HTTP terdiri daripada teks sahaja. Nah, kami paling berminat dengan struktur di mana teks ini terletak. Setiap mesej terdiri daripada tiga bahagian:
  1. Baris permulaan—mentakrifkan data perkhidmatan.
  2. Pengepala - perihalan parameter mesej.
  3. Badan mesej (Badan) - data mesej. Mesti dipisahkan daripada tajuk dengan baris kosong.
Menggunakan protokol HTTP, anda boleh menghantar permintaan kepada pelayan (permintaan) dan menerima respons daripada pelayan (tindak balas). Permintaan dan respons mempunyai parameter yang sedikit berbeza.

Seperti apa permintaan HTTP yang mudah

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Garis permulaan mengandungi:
  • GET - kaedah permintaan;
  • / — meminta laluan (laluan);
  • HTTP/1.1 - versi protokol pemindahan data.
Kemudian datang tajuk:
  • Hos — hos yang permintaannya ditujukan;
  • Ejen Pengguna ialah pelanggan yang menghantar permintaan.
Tiada badan mesej. Dalam permintaan HTTP, hanya baris permulaan dan pengepala Hos diperlukan. Sekarang mari kita lihat semuanya mengikut urutan. Permintaan HTTP mesti mengandungi beberapa kaedah. Terdapat sembilan daripadanya secara keseluruhan: DAPATKAN, POS, LETAK, PILIHAN, KEPALA, TAMPAL, PADAM, SUSAN, SAMBUNG. Yang paling biasa ialah GET dan POST. Kedua-dua kaedah ini akan mencukupi pada mulanya. GET - meminta kandungan daripada pelayan. Oleh itu, permintaan dengan kaedah GET tidak mempunyai badan mesej. Tetapi jika perlu, anda boleh menghantar parameter melalui laluan dalam format ini: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Di sini: javarush .com — hos, /send — meminta laluan, ? — pemisah yang menunjukkan bahawa parameter permintaan mengikut. Pada akhirnya, parameter disenaraikan dalam format kunci=nilai, dipisahkan oleh ampersand. POST - menerbitkan maklumat pada pelayan. Permintaan POST boleh memindahkan pelbagai maklumat: parameter dalam format key=value, JSON, kod HTML, atau juga fail. Semua maklumat dihantar dalam badan mesej. Sebagai contoh:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Permintaan dihantar ke javarush.com/user/create/json, versi protokol ialah HTTP/1.1. Terima menentukan format respons yang pelanggan jangkakan akan terima, Jenis Kandungan menentukan format apa badan mesej dihantar. Kandungan-Panjang - bilangan aksara dalam badan. Permintaan HTTP boleh mengandungi banyak pengepala yang berbeza. Butiran lanjut boleh didapati dalam spesifikasi protokol .

Respons HTTP

Selepas menerima permintaan, pelayan memprosesnya dan menghantar respons kepada klien:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Baris permulaan dalam respons mengandungi versi protokol (HTTP/1.1), Kod Status (200), Perihalan Status (OK). Tajuk menunjukkan jenis dan panjang kandungan. Badan respons mengandungi kod HTML yang akan dilukis oleh penyemak imbas ke dalam halaman HTML.

Kod Status Respons

Segala-galanya jelas dengan kandungan dan pengepala mesej, tetapi berbaloi untuk mengatakan beberapa perkataan tentang kod status. Kod Status Respons sentiasa tiga digit, dan digit pertama kod menunjukkan kategori respons:
  • 1xx - bermaklumat. Permintaan telah diterima, pelayan sedia untuk meneruskan;
  • 2xx - berjaya. Permintaan telah diterima, difahami dan diproses;
  • 3xx - ubah hala. Langkah-langkah berikut mesti dilakukan untuk memproses permintaan;
  • 4xx - ralat pelanggan. Permintaan mengandungi ralat atau tidak mematuhi protokol;
  • 5xx - ralat pelayan. Pelayan tidak dapat memproses permintaan, walaupun ia telah dikarang dengan betul;
Digit kedua dan ketiga dalam kod memperincikan jawapan. Sebagai contoh:
  • 200 OK — permintaan telah diterima dan berjaya diproses;
  • 201 Created — permintaan telah diterima dan berjaya diproses, mengakibatkan penciptaan sumber baharu atau contohnya;
  • 301 Dipindah Secara Kekal - sumber yang diminta telah dialihkan secara kekal, dan permintaan seterusnya kepadanya mesti berlaku di alamat baharu;
  • 307 Ubah Hala Sementara - sumber telah dialihkan buat sementara waktu. Buat masa ini, anda boleh mengaksesnya menggunakan ubah hala automatik;
  • 403 Dilarang - permintaan adalah jelas, tetapi kebenaran diperlukan;
  • 404 Not Found - pelayan tidak menemui sumber di alamat ini;
  • 501 Tidak Dilaksanakan - pelayan tidak menyokong fungsi untuk bertindak balas kepada permintaan ini;
  • Versi HTTP 505 Tidak Disokong - pelayan tidak menyokong versi protokol HTTP yang ditentukan.
Selain kod status respons, perihalan status juga dihantar, menjadikannya intuitif untuk memahami maksud status tertentu. Protokol HTTP sangat praktikal: ia menyediakan sejumlah besar pengepala, yang menggunakan mana anda boleh menyediakan komunikasi fleksibel antara klien dan pelayan. Semua tajuk permintaan dan respons, kaedah permintaan dan kod status respons tidak boleh dipertimbangkan dalam satu artikel. Jika perlu, anda boleh membaca spesifikasi protokol rasmi , yang menerangkan semua nuansa. Protokol HTTP biasanya digunakan pada port 80, jadi apabila anda melihat alamat yang berakhir pada port 80, anda boleh yakin bahawa ia harus diakses melalui HTTP. Dengan perkembangan teknologi dan pergerakan aktif data peribadi di Internet, kami terpaksa memikirkan cara memberikan perlindungan tambahan untuk maklumat yang dihantar oleh pelanggan kepada pelayan. Hasilnya ialah protokol HTTPS.

Apakah perbezaan antara HTTPS dan HTTP

HTTPS secara sintaksis adalah sama dengan protokol HTTP, iaitu, ia menggunakan baris permulaan dan pengepala yang sama. Satu-satunya perbezaan ialah penyulitan tambahan dan port lalai (443) . HTTPS disulitkan antara HTTP dan TCP, iaitu antara aplikasi dan lapisan pengangkutan. Jika anda terlupa apa itu, lihat artikel tentang model OSI . Standard penyulitan moden ialah TLS. Kami tidak akan mendalami topik ini, tetapi ingat bahawa penyulitan berlaku sebelum maklumat mencapai lapisan pengangkutan . HTTPS menyulitkan sepenuhnya semua maklumat kecuali hos dan port yang permintaan dihantar. Untuk menukar pelayan menggunakan protokol HTTPS dan bukannya HTTP, kami tidak perlu menukar kod pelayan. Ciri ini didayakan dalam bekas servlet, yang akan kita bincangkan dalam artikel berikut. Itu sahaja untuk hari ini. Tapi tunggu sekejap. Untuk merasakan permintaan HTTP, buka Google Chrome, tekan F12, pilih tab Rangkaian. Semua permintaan dan respons yang dihantar/diterima oleh penyemak imbas anda akan dipaparkan di sini. Bahagian 4. Asas Maven Bahagian 5. Servlets. Menulis aplikasi web ringkas Bahagian 6. Bekas Servlet Bahagian 7. Memperkenalkan corak MVC (Model-View-Controller) Bahagian 8. Menulis aplikasi spring-boot kecil
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION