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" "/" 1*DIGIT "." 1*DIGIT

Ví dụ

HTTP/1.0

or

HTTP/1.1

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 reservedunsafe là tương đương với mã hóa "%" HEX HEX" của chúng.

Ví dụ

Dưới đây là 3 ví dụ về URI mà tương đương nhau:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

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

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

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-EncodingContent-Encoding Header mà chúng ta sẽ quan sát trong các chương kế tiếp.

Ví dụ

Dưới đây là các sơ đồ mã hóa hợp lệ:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

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-TypeAccept để 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 )

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-LanguageContent-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.

Loạt bài hướng dẫn học HTTP cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com