HTTP - Yêu cầu

Máy khách HTTP gửi một yêu cầu HTTP đến máy chủ dưới dạng thông báo yêu cầu bao gồm định dạng sau:


     
  • A Request-line
  • Zero or more header (General|Request|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 yêu cầu HTTP.

Dòng yêu cầu

Dòng Yêu cầu bắt đầu bằng mã thông báo phương thức, tiếp theo là URI yêu cầu và phiên bản giao thức, và kết thúc bằng CRLF. Các phần tử được phân tách bằng ký tự SP khoảng trắng.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Hãy thảo luận về từng phần được đề cập trong Dòng yêu cầu.

Phương thức yêu cầu

Yêu cầu method chỉ ra phương pháp được thực hiện trên tài nguyên được xác định bởi Request-URI. Phương thức này có phân biệt chữ hoa chữ thường và luôn phải được viết hoa. Bảng sau liệt kê tất cả các phương thức được hỗ trợ trong HTTP / 1.1.

SN Phương pháp và Mô tả
1 GET

Phương thức GET được sử dụng để truy xuất thông tin từ máy chủ đã cho bằng cách sử dụng một URI nhất định. Các yêu cầu sử dụng GET chỉ nên truy xuất dữ liệu và không có ảnh hưởng nào khác đến dữ liệu.

2 HEAD

Giống như GET, nhưng nó chỉ chuyển dòng trạng thái và phần tiêu đề.

3 POST

Yêu cầu POST được sử dụng để gửi dữ liệu đến máy chủ, ví dụ: thông tin khách hàng, tải tệp lên, v.v. bằng các biểu mẫu HTML.

4 PUT

Thay thế tất cả các bản trình bày hiện tại của tài nguyên đích bằng nội dung đã tải lên.

5 DELETE

Loại bỏ tất cả các đại diện hiện tại của tài nguyên đích do URI cung cấp.

6 CONNECT

Thiết lập một đường hầm đến máy chủ được xác định bởi một URI nhất định.

7 OPTIONS

Mô tả các tùy chọn giao tiếp cho tài nguyên mục tiêu.

số 8 TRACE

Thực hiện kiểm tra lại vòng lặp thông báo cùng với đường dẫn đến tài nguyên đích.

Yêu cầu-URI

Yêu cầu-URI là Định danh tài nguyên đồng nhất và xác định tài nguyên để áp dụng yêu cầu. Sau đây là các biểu mẫu được sử dụng phổ biến nhất để chỉ định một URI:

Request-URI = "*" | absoluteURI | abs_path | authority
 
SN Phương pháp và Mô tả
1 Dấu hoa thị *được sử dụng khi một yêu cầu HTTP không áp dụng cho một tài nguyên cụ thể mà cho chính máy chủ và chỉ được phép khi phương thức được sử dụng không nhất thiết phải áp dụng cho một tài nguyên. Ví dụ:

OPTIONS * HTTP/1.1

2 Các absoluteURIđược sử dụng khi một yêu cầu HTTP được gửi tới một proxy. Proxy được yêu cầu để chuyển tiếp yêu cầu hoặc dịch vụ từ bộ nhớ cache hợp lệ và trả lại phản hồi. Ví dụ:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3 Dạng phổ biến nhất của Request-URI được sử dụng để xác định tài nguyên trên máy chủ gốc hoặc cổng. Ví dụ: một máy khách muốn truy xuất tài nguyên trực tiếp từ máy chủ gốc sẽ tạo kết nối TCP tới cổng 80 của máy chủ lưu trữ "www.w3.org" và gửi các dòng sau:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

Lưu ý rằng đường dẫn tuyệt đối không được để trống; nếu không có trong URI ban đầu, nó PHẢI được cung cấp là "/" (gốc máy chủ).

Yêu cầu trường tiêu đề

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 các trường tiêu đề Yêu cầu là gì.

Các trường tiêu đề yêu cầu cho phép máy khách chuyển thông tin bổ sung về yêu cầu và về chính máy khách đến máy chủ. Dưới đây là danh sách một số trường tiêu đề Yêu cầu quan trọng có thể được sử dụng dựa trên yêu cầu:

  • Accept-Charset

  • Accept-Encoding

  • Accept-Language

  • Authorization

  • Expect

  • From

  • Host

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • User-Agent

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 báo yêu cầu

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

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Ở đây, chúng tôi không gửi bất kỳ dữ liệu yêu cầu nào đến máy chủ vì chúng tôi đang tìm nạp một trang HTML thuần túy từ máy chủ. Kết nối là tiêu đề chung và phần còn lại của tiêu đề là tiêu đề yêu cầu. Ví dụ sau đây cho thấy cách gửi dữ liệu biểu mẫu đến máy chủ bằng cách sử dụng nội dung thông báo yêu cầu:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID=string&content=string&/paramsXML=string

Tại đây, URL /cgi-bin/process.cgi đã cho sẽ được sử dụng để xử lý dữ liệu đã truyền và theo đó, một phản hồi sẽ được trả về. Đâycontent-type cho máy chủ biết rằng dữ liệu đã truyền là dữ liệu biểu mẫu web đơn giản và lengthsẽ là độ dài thực tế của dữ liệu được đưa vào nội dung thư. Ví dụ sau cho thấy cách bạn có thể chuyển XML thuần túy đến máy chủ web của mình:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>