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 .
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:
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:
- Baris permulaan—mentakrifkan data perkhidmatan.
- Pengepala - perihalan parameter mesej.
- Badan mesej (Badan) - data mesej. Mesti dipisahkan daripada tajuk dengan baris kosong.
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.
- Hos — hos yang permintaannya ditujukan;
- Ejen Pengguna ialah pelanggan yang menghantar permintaan.
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;
- 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.
GO TO FULL VERSION