Bahan ini adalah sebahagian daripada siri "Pengenalan kepada Pembangunan Perusahaan". Artikel sebelumnya:
Hai! Hari ini kita akan belajar tentang protokol HTTP dan HTTPS. Tetapi pertama, mari kita jelaskan satu perkara: kita bercakap tentang protokol untuk menghantar data melalui rangkaian pada tahap aplikasi model OSI. Anda mungkin masih ingat bahawa kami mengenali model OSI dalam salah satu artikel sebelumnya. Jika anda tidak ingat itu, ini dia .

Apakah protokol komunikasi data?
Inilah yang kami panggil set peraturan yang dipersetujui yang membenarkan pembangun perkhidmatan yang berbeza menghantar maklumat dalam format yang boleh difahami oleh orang lain. Contohnya, anda boleh menggunakan Google Chrome untuk mendapatkan maklumat daripada Facebook dan Twitter, kerana pembangun menghantarnya menggunakan protokol HTTP standard, yang membolehkan penyemak imbas anda memprosesnya. Peraturan seragam sangat mudah untuk mereka yang membangunkan bahagian pelayan: terdapat banyak perpustakaan yang boleh menukar maklumat untuk anda dan menghantarnya menggunakan protokol yang sesuai. HTTP pada mulanya dianggap sebagai protokol untuk menghantar halaman HTML. Itulah cara ia digunakan untuk masa yang lama, tetapi kini pengaturcara sering menggunakannya untuk menghantar kedua-dua rentetan dan fail media. Secara umum, protokol ini diterima secara universal dan serba boleh, dan ia sangat mudah digunakan. Dan sekarang kita akan menyiasat cara menggunakannya.Struktur HTTP
Kita harus ambil perhatian segera bahawa protokol HTTP hanya terdiri daripada teks. Apa yang paling menarik minat kami ialah struktur teks ini. Setiap mesej terdiri daripada tiga bahagian:- Baris permulaan — Ini mentakrifkan beberapa data pengemasan.
- Pengepala — Ini menerangkan parameter mesej.
- Badan — Ini ialah kandungan mesej. Badan mesti dipisahkan daripada pengepala dengan baris kosong.
Begini rupa permintaan HTTP yang mudah:
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Garis permulaan menunjukkan:
- GET — Kaedah permintaan
- / — Laluan permintaan
- HTTP/1.1 — Versi protokol
- Hos — Hos yang permintaannya ditujukan
- Ejen Pengguna — Pelanggan yang menghantar permintaan
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
di mana codegym.cc ialah hos, /send ialah laluan permintaan, dan ? ialah pemisah yang menunjukkan bahawa parameter pertanyaan mengikuti. Pada akhirnya, pasangan nilai kunci ("kunci=nilai") disenaraikan, dipisahkan oleh ampersand. POST — Kaedah ini menerbitkan maklumat pada pelayan. Permintaan POST boleh menghantar pelbagai jenis maklumat: parameter sebagai pasangan "key=value", JSON, kod HTML atau 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: codegym.cc
{
"Id": 12345,
"User": "John"
}
Permintaan dihantar ke codegym.cc/user/create/json, dan versi protokol ialah HTTP/1.1. "Terima" menunjukkan format respons yang dijangka diterima oleh pelanggan. "Jenis Kandungan" menunjukkan format badan mesej yang dihantar dalam permintaan. "Panjang Kandungan" ialah bilangan aksara dalam badan. Permintaan HTTP boleh mengandungi banyak pengepala yang berbeza. Untuk maklumat lanjut, lihat 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 respons mengandungi versi protokol (HTTP/1.1), kod status (200) dan perihalan status (OK). Tajuknya termasuk jenis dan panjang kandungan. Badan respons mengandungi kod HTML yang dipaparkan oleh penyemak imbas sebagai halaman HTML.
Kod status respons
Segala-galanya jelas mengenai badan dan pengepala mesej, tetapi kita harus menyebut beberapa perkataan tentang kod status. Kod status respons sentiasa tiga digit. Digit pertama kod menunjukkan kategori respons:- 1xx — Bermaklumat. Permintaan itu diterima. Pelayan sedia untuk meneruskan.
- 2xx - Berjaya. Permintaan telah diterima, difahami dan diproses.
- 3xx — Ubah hala. Tindakan tambahan mesti dilakukan untuk memproses permintaan.
- 4xx — Ralat Pelanggan. Permintaan mengandungi ralat atau tidak mematuhi protokol.
- 5xx — Ralat Pelayan. Permintaan telah dikarang dengan betul, tetapi pelayan tidak dapat memprosesnya.
- 200 OK — Permintaan telah diterima dan berjaya diproses.
- 201 Created — Permintaan telah diterima dan berjaya diproses, menghasilkan penciptaan sumber atau contoh baharu.
- 301 Dipindah Secara Kekal — Sumber yang diminta telah dialihkan secara kekal. Permintaan seterusnya untuknya hendaklah dibuat menggunakan alamat baharu.
- 307 Ubah Hala Sementara — Sumber telah dialihkan buat sementara waktu. Buat masa ini, ia boleh diakses menggunakan pemajuan automatik.
- 403 Dilarang — Permintaan itu difahami, tetapi kebenaran diperlukan.
- 404 Not Found — Pelayan tidak menemui sumber di alamat ini.
- 501 Tidak Dilaksanakan — Pelayan tidak menyokong fungsi yang diperlukan untuk membalas permintaan.
- Versi HTTP 505 Tidak Disokong — Pelayan tidak menyokong versi protokol HTTP yang ditentukan.
GO TO FULL VERSION