1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu HTTP tiếng Việt

72 241 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 0,93 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

HTTP là viết tắt của giao thức truyền tải siêu văn bản là một giao thức cấp độ ứng dụng cho các hệ thống thông tin phân phối, cộng tác và đa phương tiện. Đây là nền tảng cho giao tiếp thông tin cho World Wide Web từ 1990.

Trang 1

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1

Mục lục

Giới thiệu về giao thức HTTP 5

Đối với độc giả 6

Điều kiện tiền đề 6

Tổng quan về HTTP 6

Các đặc trưng cơ bản 6

Cấu trúc cơ bản 7

Client 8

Server 8

Các tham số trong HTTP 8

Phiên bản HTTP 8

Ví dụ 8

Uniform Resource Identifiers - Bộ nhận diện nguồn tài nguyên đồng nhất 9

Ví dụ 9

Các định dạng Ngày/Thời gian 9

Các bộ ký tự 9

Ví dụ 9

Mã hóa nội dung 10

Ví dụ 10

Các kiểu đa phương tiện (media types) 10

Ví dụ 11

Các thẻ ngôn ngữ 11

Ví dụ 11

Message trong HTTP 11

Dòng đầu thông báo (start-line) 12

Các trường Header 13

Phần thân thông báo 14

Yêu cầu (Request) trong HTTP 14

Trang 2

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 2

Dòng Yêu cầu 15

Method yêu cầu 15

Request-URI 16

Các trường Header Yêu cầu 17

Các ví dụ của Thông báo Yêu cầu 19

Phản hồi (Response) trong HTTP 20

Dòng trạng thái 20

Phiên bản HTTP 21

Mã hóa trạng thái 21

Các trường Header Phản hồi 22

Các ví dụ về Thông báo Phản hồi 22

Phương thức trong HTTP 24

Phương thức GET 25

Phương thức HEAD 26

Phương thức POST 27

Phương thức PUT 28

Phương thức DELETE 29

Phương thức CONNECT 29

Phương thức OPTIONS 30

Phương thức TRACE 30

Mã hóa trạng thái trong HTTP 31

1xx: Thông tin 32

2xx: Thành công 32

3xx: Sự điều hướng lại 33

4xx: Lỗi Client 34

5xx: Lỗi Server 36

Các trường Header trong HTTP 36

General Header 37

Trường Cache-Control 37

Trang 3

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 3

Trường Connection 40

Trường Date 40

Trường Pragma 41

Trường Trailer 41

Trường Transfer-Encoding (Mã hóa truyền tải) 41

Trường Upgrade 41

Trường Via 42

Trường Warning (Cảnh báo) 42

Các trường Header yêu cầu trên Client 42

Trường Accept (Chấp nhận) 42

Trường Accept-Charset 43

Trường Accept-Encoding 43

Trường Accept-Language 43

Trường Authorization (Sự ủy quyền) 44

Trường Cookie 44

Trường Expect 44

Trường From 44

Trường Host 45

Trường If-Match 45

Trường If-Modified-Since 45

Trường If-None-Match 46

Trường If-Range 46

Trường If-Unmodified-Since 46

Trường Max-Forwards 47

Trường Proxy-Authorization 47

Trường Range 47

Trường Referer 48

Trường TE 48

Trường User-Agent 49

Trang 4

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 4

Các trường Phản hồi từ Server 49

Trường Accept-Ranges 49

Trường Age 49

Trường ETag 50

Trường Location 50

Trường Proxy-Authenticate 50

Trường Retry-After 51

Trường Server 51

Trường Set-Cookie 51

Trường Vary 52

Trường WWW-Authenticate 53

Entity Headers 53

Trường Allow 53

Trường Content-Encoding 53

Trường Content-Language 54

Trường Content-Length 54

Trường Content-Location 54

Trường Content-MD5 55

Trường Content-Range 55

Trường Content-Type 56

Trường Expires 56

Trường Last-Modified 56

Caching trong HTTP 56

Mã hóa URL trong HTTP 59

Bảo mật trong HTTP 66

Sự rò rỉ thông tin cá nhân 66

Sự tấn công dựa trên các tên Path và File 67

Việc đánh lừa DNS (DNS Spoofing) 67

Vị trí các Header và việc đánh lừa 68

Trang 5

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 5

Ủy nhiệm xác minh 68

Các sự ủy quyền và việc ghi vào bộ nhớ ẩn 68

Ví dụ về Message trong HTTP 68

Ví dụ 1 68

Client yêu cầu: 68

Server phản hồi: 69

Ví dụ 2 69

Client yêu cầu 69

Server phản hồi 69

Ví dụ 3 70

Client yêu cầu 70

Server phản hồi 70

Ví dụ 4 71

Client yêu cầu 71

Server phản hồi 71

Tài liệu tham khảo về HTTP 72

Các đường link hữu ích về HTTP 72

Giới thiệu về giao thức HTTP HTTP là viết tắt của Giao thức truyền tải siêu văn bản (Hypertext Transfer Protocol) là một giao thức cấp độ ứng dụng cho các hệ thống thông tin phân phối, cộng tác và đa phương tiện Đây là nền tảng cho giao tiếp thông tin cho World Wide Web (ví dụ: Internet) từ 1990 HTTP là một giao thức chung và stateless mà có thể được sử dụng cho các mục đích khác cũng như các sự mở rộng của các phương thức yêu cầu, các code lỗi và Header của nó

Phần hướng dẫn này được xây dựng trên cơ sở các chi tiết kỹ thuật RFC-2616, mà xác định giao thức có liên quan như HTTP/1.1 HTTP/1.1 là một phiên bản của HTTP ban đầu (HTTP/1.0) Sự khác biệt lớn giữa HTTP/1.0 và HTTP/1.1 là HTTP/1.0 sử dụng một kết nối mới cho mỗi Yêu

Trang 6

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 6

cầu/Phản hồi trao đổi, trong khi đó kết nối trong HTTP/1.1 có thể được sử dụng cho một hoặc nhiều Yêu cầu/Phản hồi trao đổi

Loạt bài hướng dẫn của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint

Đối với độc giả Phần hướng dẫn này đã được chuẩn bị cho các học viên nghiên cứu về khoa học máy tính và các nhà phát triển web để giúp họ có kiến thức cơ bản về các khái niệm các mức độ phát triển của HTTP

Điều kiện tiền đề Trước khi tiến hành học tập với phần hướng dẫn này, nó là tốt cho bạn khi bạn có một sự hiểu biết

cơ bản về các khái niệm web, các trình duyệt web, các Server, và phần mềm xây dựng trên cơ sở cấu trúc Server-Client

Tổng quan về HTTP HTTP là một giao thức cấp độ ứng dụng cho các hệ thống thông tin phân phối, cộng tác, đa phương tiện Đây là nền tảng cho giao tiếp dữ liệu cho WWW (ví dụ: Internet) từ 1990 HTTP là một giao thức chung và stateless mà có thể được sử dụng cho các mục đích khác cũng như các

sự co giãn của các phương thức yêu cầu, các code lỗi và Header của nó

Theo cơ bản, HTTP là một giao thức giao tiếp trên cơ sở TCP/IP, mà được sử dụng để phân phối

dữ liệu (các tệp HTML, các file ảnh, …) trên WWW Cổng mặc định là TCP 80, những các cổng khác cũng có thể được sử dụng Nó cung cấp một cách được tiêu chuẩn hóa cho các máy tính để giao tiếp với nhau Chi tiết kỹ thuật HTTP xác định cách mà dữ liệu yêu cầu của Client sẽ được xây dựng và được gửi tới Server, và cách để Server phản hồi các yêu cầu này

Các đặc trưng cơ bản

Có 3 đặc trưng cơ bản mà làm HTTP trở thành một giao thức đơn giản nhưng đầy sức mạnh:

HTTP là giao thức connectionless (kết nối không liên tục): Client của HTTP, ví dụ: một

trình duyệt khởi tạo một yêu cầu HTTP và sau đó một yêu cầu được tạo ra, Client ngắt kết nối từ Server và đợi cho một phản hồi Server xử lý yêu cầu và thiết lập lại sự kết nối với Client để gửi phản hồi trở lại

Trang 7

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 7

HTTP là một phương tiện độc lập: Nó nghĩa là, bất kỳ loại dữ liệu nào cũng có thể được

gửi bởi HTTP miễn là Server và Client biết cách để kiểm soát nội dung dữ liệu Nó được yêu cầu cho Client cũng như Server để xác định kiểu nội dung bởi sử dụng kiểu MIME thích hợp

HTTP là stateless: Như đã được đề cập ở trên, HTTP là connectionless và nó một kết quả

trực tiếp là HTTP trở thành một giao thức Stateless Server và Client biết về nhau chi trong một yêu cầu hiện tại Sau đó, cả hai chúng nó quên tất cả về nhau Do bản chất của giao thức, cả Client và các trình duyệt có thể giữ lại thông tin giữa các yêu cầu khác nhau giữa các trang web

HTTP/1.0 sử dụng một kết nối mới cho mỗi trao đổi Yêu cầu/Phản hồi (Request/Reponse), trong khi mà kết nối của HTTP/1.1 có thể được sử dụng cho một hoặc nhiều trao đổi Yêu cầu/Phản hồi

Cấu trúc cơ bản

Sơ đồ dưới đây chỉ cấu trúc rất đơn giản của một ứng dụng web và miêu tả vị trí của HTTP:

Trang 8

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 8

Giao thức HTTP là một giao thức Yêu cầu/Phản hồi dựa trên cấu trúc Client/Server, nơi mà các trình duyệt web, các thiết bị tìm kiếm,… hoạt động như các Client, và các Server web hoạt động như một Server

Client

Client gửi một yêu cầu tới Server theo mẫu của một phương thức yêu cầu, URI, và phiên bản giao thức, được theo bởi một thông báo MIME chứa các bộ chỉnh sửa yêu cầu, thông tin Client, và nội dung đối tượng có thể qua một kết nối TCP/IP

Server

Server phản hồi với một dòng trạng thái, bao gồm phiên bản giao thức của thông báo và một code thành công hoặc lỗi, theo sau bởi một thông báo MIME chứa thông tin Server, thông tin thực thể đa phương tiện và nội dung đối tượng có thể

Các tham số trong HTTP Chương này liệt kê một số các Tham số giao thức HTTP và cú pháp của chúng mà theo đó chúng được sử dụng trong giao tiếp Ví dụ, định dạng ngày tháng, định dạng URL, … Điều này sẽ giúp bạn trong việc xây dựng yêu cầu của bạn và các thông tín phản hồi trong khi viết các chương trình Client hoặc Server Bạn sẽ thấy sự hữu ích hoàn toàn của những tham số này trong các chương

kế tiếp trong khi học tập về cấu trúc thông báo cho các yêu cầu và các phản hồi HTTP

Phiên bản HTTP

HTTP sử dụng một sơ đồ đánh số <major>.<minor> để chỉ phiên bản của giao thức Phiên bản

của một thông báo HTTP được chỉ bởi một trường HTTP-Version trong dòng đầu tiên Tại đây là cú pháp chung của việc xác định số phiên bản HTTP:

HTTP - Version = "HTTP" "/" * DIGIT "." * DIGIT

Ví dụ

HTTP / 1.0

or

HTTP / 1.1

Trang 9

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 9

Uniform Resource Identifiers - Bộ nhận diện nguồn tài nguyên đồng nhất

URI là một chuỗi được định dạng, nhạy cảm với chữ hoa-thường (case-insentive) theo một cách đơn giản chứa tên, vị trí, để xác định một nguồn, ví dụ, một website, một dịch vụ web, … Một cú pháp chung của URI được sử dụng cho HTTP như sau:

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Ở đây, nếu port là trống hoặc không được cung cấp, thì port 80 được cho là cho HTTP và một abs_path trống là tương đương với một abs_path là “/” Các ký tự khác trong các bộ thiết lập reserved và unsafe là tương đương với mã hóa “%” HEX HEX” của chúng

Tất cả các nhãn Ngày/Thời gian HTTP Phải được biểu diễn trong Greenwich Mean Time (GMT),

không có sự ngoại trừ Các ứng dụng HTTP được cho phép để sử dụng 3 nhãn đại diện Ngày/Thời gian sau:

Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123

Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036

Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format

Các bộ ký tự

Chúng ta sử dụng các bộ ký tự để xác định các thiết lập ký tự mà Client ưa thích Nhiều bộ thiết lập

ký tự có thể được liệt kê riêng biệt bởi các dấu phảy Nếu một giá trị là không được xác định, mặc định là US-ASII

Ví dụ

Dưới đây là các bộ ký tự có hợp lệ:

US-ASCII

Trang 10

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 10

or

ISO-8859-1

or

ISO-8859-7

Mã hóa nội dung

Một giá trị mã hóa nội dung chỉ rằng một thuật toán mã hóa đã được sử dụng để mã hóa nội dung trước khi truyền nó tới mạng Mã hóa nội dung được sử dụng lần đầu để cho phép một tài liệu để được nén hoặc ngoài ra được truyền tải mà không thất lạc sự nhận diện

Tất cả các giá trị mã hóa nội dung là không phân biệt kiểu chữ (case-insensitive) HTTP/1.1 sử

dụng các giá trị mã hóa nội dung trong các trường Accept-Encoding và Content-EncodingHeader

mà chúng ta sẽ quan sát trong các chương kế tiếp

Các kiểu đa phương tiện (media types)

HTTP sử dụng các Kiểu phương tiện Internet trong các trường Content-Type và Accept để cung

cấp dữ liệu mở và có thể mở rộng Tất cả các giá trị kiểu phương tiện được đăng ký với IANA (Internet Assigned Number Authority) Cú pháp chung để xác định kiểu phương tiện như sau:

media-type = type "/" subtype *( ";" parameter )

Trang 11

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 11

Các thuộc tính type, subtype, và parameter là case-insensitive

Ví dụ

Accept: image/gif

Các thẻ ngôn ngữ

HTTP sử dụng các thẻ ngôn ngữ trong các trường Accept-Language và Content-Language Một

thẻ ngôn ngữ bao gồm một hoặc nhiều phần: Một thẻ ngôn ngữ sơ cấp và một dãy các thẻ phụ:

language-tag = primary-tag *( "-" subtag )

Các khoảng trắng không được cho phép trong thẻ và tất cả các thẻ là case-insentive

Ví dụ

Các thẻ ví dụ bao gồm:

en, en-US, en-cockney, i-cherokee, x-pig-latin

Hai chữ primary-tag là một chữ viết tắt cho ngôn ngữ trong ISO-639 và hai ký tự đầu tiên trong thẻ phụ subtag là mã quốc gia

Message trong HTTP HTTP được xây dựng trên cơ sở mô hình cấu trúc Client-Server và giao thức Stateless các Yêu cầu/Phản hồi mà điều hành bởi việc trao đổi các thông báo (Message) dọc theo một kết nối TCP/IP

Một Client là một chương trình (một trình duyệt hoặc bất kỳ Client) mà thiết lập một kết nối tới một Server cho mục đích gửi một hoặc nhiều thông báo yêu cầu HTTP Một HTTP “Server” là một chương trình (hiểu theo cách chung là một Server web như Apache Server web hoặc Internet Information Services – IIS …) mà chấp nhận các kết nối để phục vụ các yêu cầu HTTP bởi việc gửi các thông báo phản hồi HTTP

HTTP sử dụng URI để nhận diện một nguồn đã cho và để thiết lập một kết nối Một khi một kết nối

được thiết lập, Các Thông báo HTTP được truyền trong một định dạng tương tự như được sử

dụng trong thư điện tử Internet Mail [RFC5322] và MIME (Multipurpose Internet Mail Extensions)

[RFC2045] Các thông báo này bao gồm các Yêu cầu từ Client tới Server và các Phản hồi từ

Server tới Client mà sẽ theo định dạng sau:

Trang 12

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 12

HTTP - message = < Request > | < Response > ; HTTP / 1.1 messages

Các yêu cầu HTTP và các phản hồi HTTP sử dụng một định dạng thông báo chung của RFC 822 cho truyền trải dữ liệu được yêu cầu Định dạng thông báo chung này bao gồm 4 mục:

 Một dòng đầu tiên

 Không hoặc nhiều trường Header theo sau bởi CRLF

 Một dòng trống (ví dụ: một dòng mà không có gì trước CRLF), chỉ phần cuối của trường Header

 Một thân thông báo tùy ý

Trong các mục tiếp theo, chúng ta sẽ giải thích từng mục được sử dụng trong thông báo HTTP

Dòng đầu thông báo (start-line)

Một dòng đầu sẽ có cú pháp chung như sau:

start-line = Request-Line | Status-Line

Chúng ta sẽ bàn luận Request-Line và Status-Line trong khi thảo luận về các thông báo Yêu cầu

HTTP và Phản hồi HTTP tương ứng Bây giờ, chúng ta xem xét một số ví dụ về dòng bắt đầu trong trường hợp yêu cầu và phản hồi

Trang 13

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 13

GET /hello.jsp HTTP/1.1 (This is Request-Line sent by the client)

HTTP/1.1 200 OK (This is Status-Line sent by the server)

Các trường Header

Các trường Header cung cấp thông tin được yêu cầu về yêu cầu hoặc phản hồi, hoặc về đối tượng được gửi trong thân thông báo Có 4 kiểu của Header trong các thông báo HTTP:

Kiểu chung (General-Header): Các trường Header này có khả năng ứng dụng chung cho

cả các thông báo yêu cầu và phản hồi

Kiểu yêu cầu (Request-Header): Các trường Header này chỉ có khả năng áp dụng cho các

thông báo yêu cầu

Kiểu phản hồi (Response-Header): Các trường Header này chỉ có khả năng áp dụng cho

các thông báo phản hồi

Kiểu thực thể (Entity-Header): Các trường này xác định thông tin về thân-thực thể hoặc,

nếu không có phần thân nào hiển thị, về nguồn được nhận diện bởi yêu cầu

Tất cả các Header được đề cập ở trên theo một định dạng chung và mỗi một trường Header bao gồm một tên được theo sau bởi một dấu hai chấm (:) và giá trị trường như sau:

message-header = field-name ":" [ field-value ]

Dưới đây là ví dụ về các trường Header đa dạng:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3

Trang 14

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 14

Phần thân thông báo là tùy ý cho một thông báo HTTP nhưng nếu nó là có sẵn, thì khi đó nó được

sử dụng để mang phần thân được liên kết với yêu cầu hoặc phản hồi Nếu phần thân thực thể được liên kết, thì sau đó thường các dòng Content-Type và Content-Length xác định bản chất của phần thân được liên kết

Một phần thân thông báo là phần mà mang dữ liệu yêu cầu HTTP thực sự (bao gồm dữ liệu mẫu

và được tải lên,…) và dữ liệu phản hồi HTTP từ Server (bao gồm các file, ảnh, …) Dưới đây là nội dung đơn giản của một phần thân thông báo:

Yêu cầu (Request) trong HTTP

Một Client gửi một yêu cầu HTTP tới một Server trong mẫu một thông báo yêu cầu mà bao gồm định dạng sau:

 Một dòng yêu cầu

 Không hoặc nhiều hơn trường Header (General|Request|Entity) được theo sau bởi CRLF

Trang 15

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 15

 Một dòng trống (ví dụ: một dòng không có gì đằng trước CRLF) chỉ phần kết thúc của trường Header

 Một phần thân thông báo tùy ý

Các phần dưới giải thích cách sử dụng của mỗi đối tượ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 với một thủ tục method, được theo sau bởi một Request-URI và phiên bản giao thức, và kết thúc với CRLF Các yếu tố được phân biệt riêng rẽ bởi các ký tự khoảng trống

SP

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

Dưới đây thảo luận về mỗi phần được đề cập trong Dòng Yêu cầu

Method yêu cầu

method yêu cầu chỉ phương thức để được thực hiện trên nguồn được nhận diện URI đã cung cấp Method là case-intensive và nên luôn luôn được đề cập trong chữ hoa Bảng

bởiRequest-dưới đây liệt kê tất cả các method được hỗ trợ trong HTTP/1.1

STT Phương thức và Miêu tả

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

Trang 16

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 16

Request-URI là một Bộ nhận diện Nguồn Đồng nhất (URI) và xác định nguồn mà áp dụng yêu cầu

Dưới đây là các mẫu thường được sử dụng để xác định một URI:

Trang 17

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 17

Request-URI = "*" | absoluteURI | abs_path | authority

STT Phương thức và Miêu tả

1 Một dấu * được sử dụng khi một yêu cầu HTTP không áp dụng tới

một nguồn cụ thể, nhưng tới chính Server đó, và chỉ được cho phép

khi phương thức được sử dụng không cần thiết áp dụng tới một

nguồn Ví dụ:

OPTIONS * HTTP/1.1

2 absoluteURI được sử dụng khi một yêu cầu HTTP đang được tạo ra

cho một sự ủy nhiệm Sự ủy nhiệm được yêu cầu chuyển tới yêu cầu hoạc dịch vụ từ một cache hiệu lực, và trả lại phản hồi Ví dụ:

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

3 Mẫu phổ biến nhất của Request-URI được sử dụng để xác định một

nguồn trên một Server hoặc gateway ban đầu Ví dụ, một Client mong muốn lấy được một nguồn một cách trực tiếp từ Server ban đầu sẽ

tạo một kết nối TCP tới port 80 của host www.w3.org và gửi các dòng sau:

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

Host: www.w3.org

Ghi chú rằng, đường truyền tuyệt đối không thể là trống rỗng; nếu không gì được trình bày trong URI ban đầu, nó Phải được cung cấp như là “/” (Server root)

Các trường Header Yêu cầu

Chúng ta sẽ học General-Header và Entity-Header trong một chương riêng khi chúng ta sẽ học về các trường Header Bây giờ, chúng ta xem các trường Header yêu cầu là gì:

Trang 18

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 18

Các trường Request-Header cho phép Client truyền thông tin thêm về yêu cầu, và về chính Client

đó, tới Server Những trường này hoạt động như các bộ chỉnh sửa yêu cầu Dưới đây là một danh sách các trường Request-Header quan trọng mà có thể được sử dụng dựa trên sự yêu cầu:

Trang 19

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 19

Các ví dụ của Thông báo Yêu cầu

Bây giờ chúng ta đặt tất cả những thứ đã học ở trên cùng với nhau để tạo một yêu cầu HTTP để

chỉ thị trang hello.htm từ Server chạy trên tutorialspoint.com

Ở đây, URl được cung cấp /cgi-bin/process.cgi sẽ được sử dụng để xử lý dữ liệu được truyền và

theo đó, một phản hồi sẽ được trả lại Ở đây content-type nói cho Server rằng dữ liệu được truyền

là một dữ liệu mẫu web đơn giản và length sẽ là độ dài thực của dự liệu đặt trong phần thân thông

báo Ví dụ sau chỉ cách bạn có thể truyền XML thuần tới Server của bạn

Trang 20

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 20

Connection: Keep-Alive

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://clearforest.com/">string</string>

Phản hồi (Response) trong HTTP

Sau khi nhận và phiên dịch một thông báo yêu cầu, một Server gửi tín hiệu phản hồi với một thông báo phản hồi HTTP

 Một phần thân thông báo tùy ý

Các khu vực dưới đây giải thích cách sử dụng của mỗi đối tượng trong một thông báo phản hồi HTTP

Dòng trạng thái

Một dòng trạng thái bao gồm phiên bản giao thức được theo sau bởi một mã hóa trạng thái số và cụm từ thuần văn bản được liên kết của nó

Trang 21

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 21

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

3 3xx: Sự điều hướng lại

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

Trang 22

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 22

khả thi

Mã hóa trạng thái HTTP là có thể co giãn và ứng dụng HTTP không được yêu cầu để hiểu ý nghĩa của tất cả các mã trạng thái được đăng ký Một danh sách của tất cả các mã trạng thái đã được cung cấp trong một chương riêng biệt cho bạn tham khảo

Các trường Header Phản hồi

Chúng ta sẽ học General-Header và Entity-Header trong một chương riêng biệt khi chúng ta sẽ học

về các trường Header Bây giờ, chúng ta tìm hiểu xem các trường Header phản hồi là gì:

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

Các ví dụ về Thông báo Phản hồi

Bây giờ chúng ta đặt tất cả các thứ trên cùng với nhau để tạo một phản hồi HTTP cho một yêu cầu

để chỉ thị trang hello.jsp từ Server đang chạy trên tutorialspoint.com

Trang 23

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 23

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

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">

Trang 24

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 24

Date: Sun, 18 Oct 2012 10:36:20 GMT

Server: Apache/2.2.14 (Win32)

STT Phương thức và miêu tả

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

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

Trang 25

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 25

Một yêu cầu GET lấy dữ liệu từ một Server bởi việc xác định các tham số trong đoạn URL của yêu

cầu Đây là phương thức chính được sử dụng để thu hồi tài liệu Ví dụ sau chỉ cách sử dụng của

phương thức GET để chỉ thị hello.htm:

GET /hello.htm HTTP/1.1

Trang 26

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 26

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

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

Phương thức HEAD là có chức năng tương tự như GET, ngoại trừ là Server phản hồi với một

dòng và các Header phản hồi, nhưng không có phần thân đối tượng Ví dụ sau chỉ cách sử dụng

của phương thức HEAD để chỉ thị thông tin Header về hello.htm:

Trang 27

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 27

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

Phương thức POST được sử dụng khi bạn muốn gửi một vài dữ liệu tới Server, ví dụ, cập nhật

file, dữ liệu mẫu, … Ví dụ sau đây chỉ cách sử dụng của phương thức POST để gửi một dữ liệu

mẫu tới Server, mà sẽ được xử lý bởi một process.cgi và cuối cùng một phản hồi sẽ được trả lại:

<? xml version ="1.0" encoding ="utf-8"?>

<string xmlns ="http://clearforest.com/" > string </string>

Bên Server, scipt process.cgi xử lý dữ liệu đã truyền và gửi phản hồi như sau:

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

Trang 28

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 28

Phương thức PUT được sử dụng để yêu cầu Server để lưu giữ phần thân đối tượng được bao

gồm tại một vị trí được xác định bởi URL đã cung cấp Ví dụ sau yêu cầu Server lưu phần thân đối

tượng đã cung cấp trong hello.htm tại root của Server:

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Trang 29

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 29

</html>

Phương thức DELETE

Phương thức DELETE được sử dụng để yêu cầu Server để xóa một file tại vị trí được xác định

bởi URL đã cung cấp Ví dụ sau yêu cầu Server xóa tệp đã cho hello.htm tại root của Server:

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Kết nối được thành lập với Server và phản hồi sau được gửi trả lại tới Client:

HTTP/1.1 200 Connection established

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Trang 30

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 30

Phương thức OPTIONS

Phương thức OPTIONS được sử dụng bởi Client để tìm ra các phương thức HTTP và các chức

năng được hỗ trợ bởi một Server Client có thể xác định một URL với phương thức OPTIONS hoặc một dấu * để hướng tới toàn bộ Server Ví dụ sau yêu cầu một danh sách các phương thức được

hỗ trợ bởi một Server đang chạy trên tutorialspoint.com:

OPTIONS * HTTP/1.1

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Server sẽ gửi một thông tin dựa trên định cấu hình hiện tại của Server, ví dụ:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Allow: GET,HEAD,POST,OPTIONS,TRACE

Content-Type: httpd/unix-directory

Phương thức TRACE

Phương thức TRACE được sử dụng để ánh xạ các nội dung của một yêu cầu HTTP tới người

yêu cầu mà có thể được sử dụng cho mục đích debug tại thời điểm của sự phát triển Ví dụ sau chỉ cách sử dụng của phương thức TRACE:

TRACE / HTTP/1.1

Host: www.tutorialspoint.com

User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)

Server sẽ gửi thông báo sau trong phản hồi tới yêu cầu trên:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache/2.2.14 (Win32)

Trang 31

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 31

Mã hóa trạng thái trong HTTP 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

3 3xx: Sự điều hướng lại

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

Trang 32

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 32

1xx: Thông tin

100 Continue Chỉ một phần của yêu cầu được nhận bởi Server, nhưng

miễn là nó không bị loại bỏ, Client nên tiếp tục với yêu cầu.

101 Switching

Protocols

Server chuyển đổi giao thức.

2xx: Thành công

201 Created Yêu cầu là hoàn thành, và một nguồn mới được tạo.

202 Accepted Yêu cầu được chấp nhận cho xử lý, nhưng việc xử lý

chưa hoàn thành.

203

Non-authoritative

Information

Thông tin trong đối tượng Header là từ một bản sao nội

bộ hoặc bên thứ 3, không từ Server ban đầu.

204 No Content Một mã trạng thái và một Header được cung cấp trong

phản hồi, nhưng không có phần thân đối tượng trong sự phản hồi.

205 Reset Trình duyệt nên dọn sạch mẫu được sử dụng cho việc

Trang 33

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 33

Content truyền tải này bởi một dữ liệu đầu vào tăng thêm.

206 Partial

Content

Server đang trả lại dữ liệu cục bộ của kích cỡ được yêu cầu Được sử dụng trong phản hồi tới một yêu cầu xác

định mộtRange Header Server phải xác định dãy được

bao gồm trong phản hồi với Content-Range header.

3xx: Sự điều hướng lại

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

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

Đây là mã phản hồi tới một Modified-Since hoặc

từ ngày cụ thể.

305 Use Proxy URL được yêu cầu phải được truy cập thông qua một sự

ủy quyền được đề cập trong Location Header.

Trang 34

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 34

không còn được sử dụng nữa, nhưng mã này được lưu giữ.

401 Unauthorized Trang được yêu cầu cần một tên sử dụng và một

mật khẩu.

402 Payment

Required

Bạn không thể sử dụng mã này nữa

403 Forbidden Sự truy cập tới trang được yêu cầu bị cấm.

404 Not Found Server không thể tìm thấy trang được yêu cầu.

Trang 35

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 35

411 Length Required 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ó.

Trang 36

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 36

501 Not Implemented Yêu cầu không được hoàn thành Server không hỗ

trợ tính năng được yêu cầu.

phản hồi không có hiệu lực từ Server ở thượng nguồn.

Các trường Header trong HTTP

Các trường Header cung cấp thông tin được yêu cầu về yêu cầu hoặc phản hồi, hoặc về đối tượng được gửi trong phần thân thông báo Có 4 kiểu của Header thông báo HTTP:

Kiểu chung (General-Header): Các trường Header này có khả năng ứng dụng chung cho

cả các thông báo yêu cầu và phản hồi

Ngày đăng: 20/09/2015, 09:40

HÌNH ẢNH LIÊN QUAN

Sơ đồ dưới đây chỉ cấu trúc rất đơn giản của một ứng dụng web và miêu tả vị trí của HTTP: - Tài liệu HTTP tiếng Việt
Sơ đồ d ưới đây chỉ cấu trúc rất đơn giản của một ứng dụng web và miêu tả vị trí của HTTP: (Trang 7)
Bảng  dưới  liệt  kê  các  chỉ  dẫn  yêu  cầu  bộ  nhớ  ẩn  quan  trọng  mà  có  thể  được  sử  dụng  bởiClient trong yêu cầu HTTP của nó: - Tài liệu HTTP tiếng Việt
ng dưới liệt kê các chỉ dẫn yêu cầu bộ nhớ ẩn quan trọng mà có thể được sử dụng bởiClient trong yêu cầu HTTP của nó: (Trang 37)
Bảng dưới đây chỉ các ký hiệu ASCII của các ký tự và sự thay thế của chúng mà có thể được sử  dụng trong URL trước khi truyền nó tới Server - Tài liệu HTTP tiếng Việt
Bảng d ưới đây chỉ các ký hiệu ASCII của các ký tự và sự thay thế của chúng mà có thể được sử dụng trong URL trước khi truyền nó tới Server (Trang 59)

TỪ KHÓA LIÊN QUAN

w