HTTP - Phản hồi

Sau khi nhận và diễn giải một thông báo yêu cầu, một máy chủ sẽ trả lời bằng một thông báo phản hồi HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Các phần sau giải thích từng thực thể được sử dụng trong thông báo phản hồi HTTP.

Dòng trạng thái tin nhắn

Dòng trạng thái bao gồm phiên bản giao thức theo sau là mã trạng thái số và cụm từ văn bản liên quan của nó. Các phần tử được phân tách bằng ký tự SP khoảng trắng.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Phiên bản HTTP

Máy chủ hỗ trợ HTTP phiên bản 1.1 sẽ trả về thông tin phiên bản sau:

HTTP-Version = HTTP/1.1

Mã trạng thái

Phần tử Mã trạng thái là một số nguyên có 3 chữ số trong đó chữ số đầu tiên của Mã trạng thái xác định loại phản hồi và hai chữ số cuối cùng không có bất kỳ vai trò phân loại nào. Có 5 giá trị cho chữ số đầu tiên:

SN Mã và Mô tả
1 1xx: Informational

Nó có nghĩa là yêu cầu đã được nhận và quá trình này đang tiếp tục.

2 2xx: Success

Nó có nghĩa là hành động đã được nhận, hiểu và chấp nhận thành công.

3 3xx: Redirection

Nó có nghĩa là phải thực hiện thêm hành động để hoàn thành yêu cầu.

4 4xx: Client Error

Nó có nghĩa là yêu cầu chứa cú pháp không chính xác hoặc không thể được thực hiện.

5 5xx: Server Error

Nó có nghĩa là máy chủ không thực hiện được yêu cầu hợp lệ.

Mã trạng thái HTTP có thể mở rộng và các ứng dụng HTTP không bắt buộc phải hiểu ý nghĩa của tất cả các mã trạng thái đã đăng ký. Danh sách tất cả các mã trạng thái đã được đưa ra trong một chương riêng biệt để bạn tham khảo.

Trường tiêu đề phản hồi

Chúng ta sẽ nghiên cứu General-header và Entity-header trong một chương riêng biệt khi chúng ta sẽ tìm hiểu các trường tiêu đề HTTP. Bây giờ, hãy kiểm tra trường tiêu đề Phản hồi là gì.

Các trường tiêu đề phản hồi cho phép máy chủ chuyển thông tin bổ sung về phản hồi mà không thể được đặt trong Dòng trạng thái. Các trường tiêu đề này cung cấp thông tin về máy chủ và về quyền truy cập thêm vào tài nguyên được xác định bởi URI yêu cầu.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Bạn có thể giới thiệu các trường tùy chỉnh của mình trong trường hợp bạn định viết Máy khách và Máy chủ Web tùy chỉnh của riêng mình.

Ví dụ về Thông điệp phản hồi

Bây giờ, hãy tập hợp tất cả lại với nhau để tạo thành một phản hồi HTTP cho một yêu cầu tìm nạp hello.htm trang từ máy chủ web đang chạy trên tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Ví dụ sau cho thấy một thông báo phản hồi HTTP hiển thị tình trạng lỗi khi máy chủ web không thể tìm thấy trang được yêu cầu:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

Sau đây là ví dụ về thông báo phản hồi HTTP hiển thị tình trạng lỗi khi máy chủ web gặp phải phiên bản HTTP sai trong yêu cầu HTTP đã cho:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>