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:
Xin chào! Hôm nay chúng ta sẽ hiểu các 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 truyền dữ liệu qua mạng ở lớp ứng dụng của mô hình OSI. Như bạn còn nhớ, chúng ta đã thảo luận về mô hình OSI ở một trong những bài viết trước. Và nếu bạn không nhớ thì đây .
Điều đáng chú ý ngay là giao thức HTTP chỉ bao gồm văn bản. Chà, chúng tôi quan tâm nhất đến cấu trúc của văn bản này. Mỗi tin nhắn bao gồm ba phần:
Giao thức truyền dữ liệu là gì
Đây là tên được đặt cho thỏa thuận được chấp nhận chung, nhờ đó các nhà phát triển dịch vụ khác nhau gửi thông tin dưới một hình thức duy nhất. Ví dụ: sử dụng Google Chrome, bạn có thể lấy thông tin từ cả Facebook và Twitter, vì các nhà phát triển truyền tải thông tin đó bằng giao thức HTTP tiêu chuẩn và trình duyệt của bạn có thể xử lý thông tin đó. Các quy tắc thống nhất cũng rất thuận tiện cho chính các nhà phát triển phía máy chủ: có nhiều thư viện có thể chuyển đổi thông tin cho bạn và gửi nó bằng giao thức được yêu cầu. HTTP ban đầu được hình thành như một giao thức để chuyển các trang HTML. Điều này đã xảy ra từ lâu nhưng hiện nay các lập trình viên thường chuyển cả chuỗi và tệp phương tiện qua nó. Nhìn chung, giao thức này rất linh hoạt và thực sự dễ sử dụng. Bây giờ chúng ta hãy tìm hiểu làm thế nào để làm điều này.
Cấu trúc HTTP
Điều đáng chú ý ngay là giao thức HTTP chỉ bao gồm văn bản. Chà, chúng tôi quan tâm nhất đến 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—xác định dữ liệu dịch vụ.
- Tiêu đề - mô tả các thông số tin nhắn.
- Nội dung tin nhắn (Body) - dữ liệu tin nhắn. Phải cách nhau khỏi tiêu đề bằng một dòng trống.
Một yêu cầu HTTP đơn giản trông như thế nào
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Dòng bắt đầu có:
- NHẬN - phương thức yêu cầu;
- / - đường dẫn yêu cầu (đường dẫn);
- HTTP/1.1 - phiên bản của giao thức truyền dữ liệu.
- Máy chủ - máy chủ mà yêu cầu được gửi tới;
- Tác nhân người dùng là ứng dụng khách gửi yêu cầu.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
Yêu cầu được gửi đến javarush.com/user/create/json, phiên bản giao thức là HTTP/1.1. Chấp nhận chỉ định định dạng phản hồi mà khách hàng mong muốn nhận được, Content-Type chỉ định định dạng nội dung thư được gửi. Độ dài nội dung - số lượng ký tự trong nội dung. Một yêu cầu HTTP có thể chứa nhiều tiêu đề khác nhau. Thông tin chi tiết có thể được tìm thấy trong đặc tả giao thức .
Phản hồi HTTP
Sau khi nhận được yêu cầu, máy chủ sẽ xử lý nó 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 trong phản hồi chứa phiên bản giao thức (HTTP/1.1), Mã trạng thái (200), Mô tả trạng thái (OK). Tiêu đề cho biết loại và độ dài của nội dung. Phần thân của phản hồi chứa mã HTML mà trình duyệt sẽ đưa vào trang HTML.
Mã trạng thái phản hồi
Mọi thứ đều rõ ràng với nội dung và tiêu đề thư, nhưng cần nói 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ố và chữ số đầu tiên của mã cho biết danh mục 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 nhận, hiểu và xử lý;
- 3xx - chuyển hướng. Các bước sau đây 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ủ. Máy chủ không thể xử lý yêu cầu, mặc dù nó được soạn chính xác;
- 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 mới hoặc phiên bản của nó;
- 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 và các yêu cầu tiếp theo đối với tài nguyên đó phải xảy ra tại đị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, bạn có thể truy cập nó bằng cách sử dụng tính năng chuyển hướng tự động;
- 403 Bị cấm - yêu cầu rõ ràng, 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 Chưa được triển khai - máy chủ không hỗ trợ chức năng đáp ứng yêu cầu này;
- Phiên bản HTTP 505 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