Tài liệu này là một phần của loạt bài "Giới thiệu về Phát triển Doanh nghiệp". Các bài viết trước:
CHÀO! Hôm nay chúng ta sẽ tìm hiểu về giao thức HTTP và HTTPS. Nhưng trước tiên, hãy làm rõ một điểm: chúng ta đang nói về các giao thức gửi dữ liệu qua mạng ở cấp độ ứng dụng của mô hình OSI. Bạn có thể nhớ lại rằng chúng ta đã biết mô hình OSI trong một trong những bài viết trước. Nếu bạn không nhớ điều đó, nó đây .

Giao thức truyền dữ liệu là gì?
Đây là cái mà chúng tôi gọi là bộ quy tắc đã được thống nhất cho phép các nhà phát triển của các dịch vụ khác nhau gửi thông tin ở định dạng mà những người khác có thể hiểu được. Ví dụ: bạn có thể sử dụng Google Chrome để nhận thông tin từ cả Facebook và Twitter, vì các nhà phát triển gửi thông tin đó bằng giao thức HTTP tiêu chuẩn, giao thức này cho phép trình duyệt của bạn xử lý thông tin đó. Các quy tắc thống nhất rất thuận tiện cho những người phát triển phần máy chủ: có rất nhiều thư viện có thể chuyển đổi thông tin cho bạn và gửi thông tin đó bằng giao thức thích hợp. HTTP ban đầu được hình thành như một giao thức để gửi các trang HTML. Đó là cách đã được sử dụng trong một thời gian dài, nhưng bây giờ các lập trình viên thường sử dụng nó để gửi cả chuỗi và tệp phương tiện. Nói chung, giao thức này được chấp nhận rộng rãi và linh hoạt, đồng thời nó thực sự dễ sử dụng. Và bây giờ chúng ta sẽ điều tra cách sử dụng nó.Cấu trúc của HTTP
Chúng ta nên lưu ý ngay rằng giao thức HTTP chỉ bao gồm văn bản. Điều chúng tôi quan tâm nhất là cấu trúc của văn bản này. Mỗi tin nhắn bao gồm ba phần:- Dòng bắt đầu — Điều này xác định một số dữ liệu vệ sinh.
- Tiêu đề — Những tiêu đề này mô tả các thông số của thông báo.
- Body — Đây là nội dung của tin nhắn. Nội dung phải được phân tách khỏi các tiêu đề bằng một dòng trống.
Đây là giao diện của một yêu cầu HTTP đơn giản:
GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Dòng bắt đầu chỉ ra:
- NHẬN - Phương thức của yêu cầu
- / — Đường dẫn của yêu cầu
- HTTP/1.1 — Phiên bản giao thức
- Máy chủ — Máy chủ mà yêu cầu được gửi đến
- Tác nhân người dùng - Khách hàng gửi yêu cầu
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
trong đó codegym.cc là máy chủ, /send là đường dẫn của yêu cầu và ? là dấu phân cách cho biết rằng các tham số truy vấn tuân theo. Cuối cùng, các cặp khóa-giá trị ("key=value") được liệt kê, phân tách bằng dấu và. POST — Phương thức này xuất bản thông tin trên máy chủ. Yêu cầu POST có thể gửi nhiều loại thông tin khác nhau: tham số dưới dạng cặp "key=value", JSON, mã HTML hoặc thậm chí cả tệp. Tất cả thông tin được gửi trong phần thân của tin nhắn. Ví dụ:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc
{
"Id": 12345,
"User": "John"
}
Yêu cầu được gửi đến codegym.cc/user/create/json và phiên bản giao thức là HTTP/1.1. "Chấp nhận" cho biết định dạng phản hồi mà khách hàng muốn nhận. "Loại nội dung" cho biết định dạng của nội dung thư được gửi trong yêu cầu. "Content-Length" là số ký tự trong phần nội dung. Một yêu cầu HTTP có thể chứa nhiều tiêu đề khác nhau. Để biết thêm thông tin, hãy xem đặc điểm kỹ thuật của giao thức .
phản hồi HTTP
Sau khi nhận được yêu cầu, máy chủ sẽ xử lý yêu cầu đó và gửi phản hồi cho máy khách:
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>
Dòng bắt đầu của phản hồi chứa phiên bản giao thức (HTTP/1.1), mã trạng thái (200) và mô tả trạng thái (OK). Tiêu đề của nó bao gồm loại và độ dài của nội dung. Nội dung phản hồi chứa mã HTML mà trình duyệt hiển thị dưới dạng trang HTML.
Mã trạng thái phản hồi
Mọi thứ đều rõ ràng về nội dung thư và tiêu đề, nhưng chúng ta nên nói một vài lời về mã trạng thái. Mã trạng thái phản hồi luôn có ba chữ số. Chữ số đầu tiên của mã cho biết loại phản hồi:- 1xx — Thông tin. Yêu cầu đã được nhận. Máy chủ đã sẵn sàng để tiếp tục.
- 2xx — Thành công. Yêu cầu đã được tiếp nhận, hiểu và xử lý.
- 3xx — Chuyển hướng. Các hành động bổ sung phải được thực hiện để xử lý yêu cầu.
- 4xx — Lỗi máy khách. Yêu cầu có lỗi hoặc không tuân thủ giao thức.
- 5xx — Lỗi máy chủ. Yêu cầu được soạn chính xác, nhưng máy chủ không thể xử lý nó.
- 200 OK — Yêu cầu đã được nhận và xử lý thành công.
- 201 Đã tạo — Yêu cầu đã được nhận và xử lý thành công, dẫn đến việc tạo một tài nguyên hoặc phiên bản mới.
- 301 Đã di chuyển vĩnh viễn — Tài nguyên được yêu cầu đã được di chuyển vĩnh viễn. Các yêu cầu tiếp theo đối với nó sẽ được thực hiện bằng địa chỉ mới.
- 307 Chuyển hướng tạm thời — Tài nguyên đã được di chuyển tạm thời. Hiện tại, nó có thể được truy cập bằng chuyển tiếp tự động.
- 403 Forbidden — Yêu cầu đã được hiểu, nhưng cần có sự cho phép.
- 404 Not Found — Máy chủ không tìm thấy tài nguyên tại địa chỉ này.
- 501 Không được triển khai — Máy chủ không hỗ trợ chức năng cần thiết để đáp ứng yêu cầu.
- 505 Phiên bản HTTP không được hỗ trợ — Máy chủ không hỗ trợ phiên bản được chỉ định của giao thức HTTP.
GO TO FULL VERSION