Hypertext Transfer Protocol

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Tổng quan[sửa | sửa mã nguồn]

HTTP (Tiếng Anh: HyperText Transfer Protocol - Giao thức truyền tải siêu văn bản) là một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web client) là giao thức Client/Server dùng cho World Wide Web-WWW, HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).

Ví dụ như muốn xem trang mạng của Wikipedia Tiếng Việt, nhập vào ô địa chỉ dòng lệnh sau: http://vi.wikipedia.org.

Lịch sử[sửa | sửa mã nguồn]

HTTP cùng với HTML là phát kiến của Tim Berners-Lee ở CERN vào năm 1989 đứng sau là các tổ chức lớn (IETF) và World Wide Web Consortium (W3C), và đỉnh cao là  việc công bố ra hàng loạt các bản RFC( Request for Comments).

Phiên bản đầu tiên của HTTP là HTTP V0.9 (1991). Năm 1995 David Ragger lãnh đạo nhóm HTTP Working Group (viết tắc HTTP WG) muốn mở rộng giao thức này đa dạng hơn như:thẻ meta-rich decription, và bảo mật hơn bằng cách thêm các phương thức khác và các trường header.Đọc thêm tại các bản RFC 1945

HTTP được viết bởi ngôn ngữ HTML, từ lúc công bố đến nay đã trải qua nhiều phiên bản 1.x (1.0, 1.1, 1.2,1.3) đến ngày nay là phiên bản 2.x.

HTTP/2 được công bố trong bản RFC 7540 vào tháng 7 2015.

HTTP Session[sửa | sửa mã nguồn]

HTTP Authentication[sửa | sửa mã nguồn]

HTTP Request methods[sửa | sửa mã nguồn]

HTTP Request Method chỉ phương thức để được thực hiện trên nguồn được nhận diện bởi Request-URI đã cung cấp

GET

GET được sử dụng để lấy lại thông tin từ Server đã cung cấp bởi sử dụng một URI đã cung cấp. Các yêu cầu sử dụng GET nên chỉ nhận dữ liệu và nên không có ảnh hưởng gì tới dữ liệu.

HEAD

Tương tự như GET, nhưng nó truyền tải dòng trạng thái và khu vực Header.

POST

Một yêu cầu POST được sử dụng để gửi dữ liệu tới Server, ví dụ, thông tin khách hàng, file tải lên, …, bởi sử dụng các mẫu HTML.

PUT

Thay đổi tất cả các đại diện hiện tại của nguồn mục tiêu với nội dung được tải lên.

DELETE

Gỡ bỏ tất cả các đại diện hiện tại của nguồn mục tiêu bởi URI.

CONNECT

Thiết lập một tunnel tới Server được xác định bởi URI đã cung cấp.

OPTIONS

Miêu tả các chức năng giao tiếp cho nguồn mục tiêu.

TRACE

Trình bày một vòng lặp kiểm tra thông báo song song với path tới nguồn mục tiêu.

HTTP Response[sửa | sửa mã nguồn]

HTTP Status Code[sửa | sửa mã nguồn]

Mã trạng thái HTTP được server phản hồi lại mỗi khi nhận được http resquest

Yếu tố Status-Code là một số nguyên 3 ký tự, trong đó ký tự đầu tiên của mã hóa trạng thái định nghĩa hạng (loại) phản hồi và hai ký tự cuối không có bất cứ vai trò phân loại nào. Có 5 giá trị của ký tự đầu tiên như sau:

1xx: Thông tin[sửa | sửa mã nguồn]

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

   100 (Continue)[sửa | sửa mã nguồn]

Máy chủ trả về mã này để chỉ ra rằng nó đã nhận được một phần đầu tiên của một yêu cầu và được chờ đợi cho phần còn lại.

101 (Switching protocols)[sửa | sửa mã nguồn]

Bên yêu cầu đã yêu cầu các máy chủ để chuyển đổi và máy chủ được thừa nhận rằng nó sẽ làm như vậy

2xx: Thành công[sửa | sửa mã nguồn]

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

200 (Successful)[sửa | sửa mã nguồn]

Các máy chủ xử lý yêu cầu thành công

201 (Created)[sửa | sửa mã nguồn]

Yêu cầu đã thành công và các máy chủ tạo ra một nguồn tài nguyên mới.

202 (Accepted)[sửa | sửa mã nguồn]

Máy chủ đã chấp nhận yêu cầu, nhưng vẫn chưa xử lý nó

203 (Non-authoritative information)[sửa | sửa mã nguồn]

Máy chủ xử lý yêu cầu thành công, nhưng đang quay trở lại các thông tin mà có thể là từ một nguồn khác.

204 (No content)[sửa | sửa mã nguồn]

Các máy chủ xử lý yêu cầu thành công, nhưng không trả lại bất kỳ nội dung nào

205 (Reset content)[sửa | sửa mã nguồn]

Các máy chủ proccessed yêu cầu thành công, nhưng không trả lại bất kỳ nội dung. Không giống như một phản ứng 204, phản ứng này đòi hỏi người yêu cầu thiết lập lại xem tài liệu

206 (Partial content)[sửa | sửa mã nguồn]

Các máy chủ xử lý thành công một phần của một yêu cầu

3xx: Sự điều hướng lại[sửa | sửa mã nguồn]

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

301 (Moved permanently)[sửa | sửa mã nguồn]

Các trang web yêu cầu đã bị di chuyển vĩnh viễn tới URL mới

302 (Moved temporarily)[sửa | sửa mã nguồn]

Trang được yêu cầu đã di chuyển tạm thời tới một URL mới

304 (Not modified)[sửa | sửa mã nguồn]

Các trang yêu cầu đã không được sửa đổi kể từ khi yêu cầu cuối cùng. Khi máy chủ trả về phản hồi này, nó không trả lại các nội dung của trang.

4xx: Lỗi Client[sửa | sửa mã nguồn]

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

400 (Bad request)[sửa | sửa mã nguồn]

Các máy chủ không hiểu được yêu cầu.

401 (Not authorized)[sửa | sửa mã nguồn]

Đề nghị yêu cầu xác thực. Máy chủ có thể trả về phản hồi này yêu cầu xác thực đăng nhập tài khoản và mật khẩu (thông thường máy chủ trả về phản hồi này nếu client gửi request một trang đăng nhập)

403 (Forbidden)[sửa | sửa mã nguồn]

Máy chủ từ chối yêu cầu.(thông thường nếu đăng nhập không thành công máy chủ sẽ trả về mã lỗi này)

404 (Not found)[sửa | sửa mã nguồn]

Máy chủ không thể tìm thấy trang yêu cầu. Ví dụ, máy chủ thường trả về mã này nếu có 1 yêu cầu tới một trang không tồn tại trên máy chủ.

405 (Method not allowed)[sửa | sửa mã nguồn]

Phương thức được xác định trong yêu cầu là không được cho phép.

406 (Not acceptable)[sửa | sửa mã nguồn]

Server chỉ có thể tạo một phản hồi mà không được chấp nhận bởi Client.

407 (Proxy authentication required)[sửa | sửa mã nguồn]

Yêu cầu client phải xác thực sử dụng một proxy. Khi máy chủ trả về phản hồi này, nó cũng chỉ ra proxy mà người yêu cầu phải sử dụng.

408 (Request timeout)[sửa | sửa mã nguồn]

Request tốn thời gian dài hơn thời gian Server phản hồi

409 (Conflict)[sửa | sửa mã nguồn]

Các máy chủ gặp phải một cuộc xung đột thực hiện yêu cầu. Các máy chủ phải bao gồm thông tin về các cuộc xung đột trong các phản ứng. Máy chủ có thể trả về mã này để đáp ứng với yêu cầu PUT xung đột với yêu cầu trước đó, cùng với một danh sách các sự khác biệt giữa các yêu cầu.

410 (Gone)[sửa | sửa mã nguồn]

Các máy chủ trả về phản hồi này khi các nguồn tài nguyên yêu cầu đã bị loại bỏ vĩnh viễn. Nó tương tự như một 404 (Không tìm thấy) mã, nhưng đôi khi được sử dụng ở vị trí của một 404 cho nguồn lực được sử dụng để tồn tại nhưng không còn làm. Nếu tài nguyên đã di chuyển vĩnh viễn, bạn nên sử dụng một 301 để xác định vị trí mới của tài nguyên.

411 (Length required)[sửa | sửa mã nguồn]

Content-Length không được xác định rõ. Server sẽ không chấp nhận yêu cầu mà không có nó

412 (Precondition failed)[sửa | sửa mã nguồn]

Các máy chủ không đáp ứng một trong các điều kiện tiên quyết mà người yêu cầu đưa vào yêu cầu.

413 (Request entity too large)[sửa | sửa mã nguồn]

Máy chủ không thể xử lý yêu cầu bởi vì nó là quá lớn đối với các máy chủ để xử lý.

414 (Requested URI is too long)[sửa | sửa mã nguồn]

URI yêu cầu (thường là một URL) là quá dài đối với máy chủ để xử lý.

416 (Requested range not satisfiable)[sửa | sửa mã nguồn]

Máy chủ trả về mã trạng thái này nếu yêu cầu cho một phạm vi không có sẵn cho trang.

417 (Expectation failed)[sửa | sửa mã nguồn]

Máy chủ không thể đáp ứng yêu cầu của các trường yêu cầu, tiêu đề mong đợi.

5xx: Lỗi Server[sửa | sửa mã nguồn]

Nó nghĩa là Server thất bại với việc thực hiện một yêu cầu nhìn như có vẻ khả thi.

500 (Internal server error)[sửa | sửa mã nguồn]

Các máy chủ gặp lỗi và không thể thực hiện yêu cầu.

501 (Not implemented)[sửa | sửa mã nguồn]

Các máy chủ không có các chức năng để thực hiện yêu cầu. Ví dụ, máy chủ có thể trả về mã này khi nó không nhận ra phương thức yêu cầu.

502 (Bad gateway)[sửa | sửa mã nguồn]

Các máy chủ đã hoạt động như một gateway hoặc proxy và nhận được một phản ứng không hợp lệ từ máy chủ ngược.

503 (Service unavailable)[sửa | sửa mã nguồn]

Máy chủ hiện không có sẵn (vì nó bị quá tải hoặc xuống để bảo trì). Nói chung, đây là một trạng thái tạm thời.

504 (Gateway timeout)[sửa | sửa mã nguồn]

Các máy chủ đã hoạt động như một gateway hoặc proxy và đã không nhận được yêu cầu kịp thời từ máy chủ ngược.

505 (HTTP version not supported)[sửa | sửa mã nguồn]

Các máy chủ không hỗ trợ phiên bản giao thức HTTP được sử dụng trong yêu cầu.

Sau đây là danh sách tất cả các mã trạng thái HTTP được liệt kê theo tài liệu giao thức HTTP của trang w3c

HTTP Response Header Fields[sửa | sửa mã nguồn]

Các trường Header phản hồi cho phép Server truyền thông tin thêm về phản hồi mà không thể được đặt trong dòng Status-Line. Những trường Header này cung cấp thông tin về Server và về truy cập từ xa tới nguồn được xác định bởi Request-URI:

response-header = Accept-Ranges           ; 
                       | Age                     ; 
                       | ETag                    ; 
                       | Location                ; 
                       | Proxy-Authenticate      ; 
                       | Retry-After             ; 
                       | Server                  ;
                       | Vary                    ; 
                       | WWW-Authenticate        ;

HTTP CACHING[sửa | sửa mã nguồn]

Encrypted connections[sửa | sửa mã nguồn]

Có 2 cách phổ biến mã hóa kết nối HTTP là HTTP secure (viết tắt HTTPS = HTTP + SSL) hoặc kết hợp HTTP và Transport Layer Securerity (TLS)

Liên quan[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]

Liên kết ngoài[sửa | sửa mã nguồn]

  1. HTTP Protocol w3c.org. Liên kết: https://www.w3.org/Protocols/
  2. Hypertext Transfer Protocol wikipedia https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
  3. Bản RFC 2616 https://tools.ietf.org/html/rfc2616