HTTP là một giao thức được sử dụng để truyền tải các thông tin trên hệ thống mạng internet hiện nay. Trong giao thức này, tồn tại một bộ phận cho phép các web server/browser hiểu được thông tin liên quan đến HTTP request nằm ở phần đầu tiên của nó đó là Header. Bài viết hôm nay, Stringee sẽ cùng các bạn tìm hiểu về HTTP Header và một số ví dụ về các trường mà HTTP request có thể có.
1. HTTP Header là gì?
HTTP Header là một phần của giao thức truyền siêu văn bản (HTTP) được sử dụng để truyền các thông tin bổ sung trong các yêu cầu hoặc các phản hồi HTTP. Thông qua web server mà yêu cầu được gửi tới, các dữ liệu sẽ được gửi về trình duyệt hoặc bất kỳ nguồn nào gửi đi yêu cầu đó. Thông qua Header mà server và client có thể trao đổi thông tin metadata của request.
HTTP request có thể chứa header gồm các thông tin như ngày request, liên kết giới thiệu hoặc ngôn ngữ sử dụng. Phản hồi HTTP cũng chứa trường header trong đó thông tin của nó được gửi tới trình duyệt của người dùng qua server. Đối với người dùng cuối thì trao đổi thông tin này thường là vô hình.
Các HTTP Header bao gồm các trường, mỗi trường bao gồm một dòng. Mỗi dòng chứa một cặp tên/giá trị – được gọi là cặp khóa-giá trị – được phân tách bằng dấu hai chấm và kết thúc bằng dấu ngắt dòng.
Các trường có thể được sử dụng cho HTTP Header được xác định trong RFC. Ngoài các trường này, Header không có chuẩn cho các trường mở rộng thông tin. Tuy nhiên, các Header mở rộng thường được các developer đặt với phần bắt đầu là x- như một quy ước riêng.
2. Ví dụ về các trường Request Header
2.1. Accept Fields
Sử dụng để chỉ định các loại phản hồi server chấp nhận
- Accept: thông báo cho server loại dữ liệu nào có thể được trả về
Accept: <MIME_type>/<MIME_subtype>
Accept: <MIME_type>/*
Accept: */*
// Multiple types, weighted with the quality value syntax:
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8
- Accept-Charset: chỉ định bộ ký tự mà client chấp nhận phản hồi. Trong các request chúng ta gửi đi, ta không nên dùng trường này mà hãy để browser tự quyết định nó
- Accept-Encoding: chỉ định các thuật toán mã hóa được chấp nhận trong phản hồi
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *
// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
- Accept-Language: cho biết ngôn ngữ mà con người có thể đọc được trong trường hợp server trả về kết quả. Nó là một dấu hiệu và không nhất thiết cần được kiểm soát hoàn toàn.
Accept-Language: <language>
Accept-Language: *
// Multiple types, weighted with the quality value syntax:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
2.2. Authorization
Được sử dụng để xác thực tác nhân người dùng với server
Authorization: <auth-scheme> <authorization-parameters>
2.3. Cookie
Chứa các cookie HTTP được lưu trữ trong các cặp key/value trên server được set trước đó bằng cách sử request có Header Set-Cookie. Cookie có thể bị chặn bởi các trình duyệt để không có Cookie nào được truyền tới server.
Cookie: <cookie-list>
Cookie: name=value
Cookie: name=value; name2=value2; name3=value3
2.4. Expect
Chỉ định các mong đợi từ client mà server phải đáp ứng
Expect: 100-continue
2.5. From
Chứa địa chỉ email của người dùng để kiểm soát các ứng dụng khách
From: <email>
2.6. Host
Chỉ định URL của server internet dành cho tài nguyên được request
Host: <host>:<port>
2.7. If Fields
Các trường sau đây được sử dụng để chỉ định các điều kiện nhất định theo đó các tệp được request sẽ được trả về.
- If-Match: trường header này nhắc server chỉ gửi tệp được request nếu nó khớp với các thẻ thực thể được chỉ định
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
- If-Modified-Since: chỉ định trong HTTP Header, tài nguyên được request sẽ chỉ được server phân phối nếu nó đã được thay đổi kể từ ngày được chỉ định. Nếu không, sẽ không có giao hàng và trang sẽ được tải từ bộ đệm của trình duyệt
If-Modified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
- If-None-Match: nhắc server chỉ gửi tệp được request nếu nó không khớp với bất kỳ thẻ thực thể nào được chỉ định
If-None-Match: "<etag_value>"
If-None-Match: "<etag_value>", "<etag_value>", …
If-None-Match: *
- If-Range: chỉ request một phần nội dung bị thiếu nếu nội dung chưa được thay đổi và toàn bộ nội dung nếu một thay đổi đã được thực hiện đối với nó
If-Range: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
If-Range: <etag>
- If-Unmodified-Since: được sử dụng như trường Modified
If-Unmodified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
2.8. Proxy-Authorization
Cho phép client xác định chính nó hoặc người dùng với proxy
Proxy-Authorization: <type> <credentials>
2.9. Range: Trường header Phạm vi chỉ định các phạm vi phụ của nội dung được request.
Cú pháp là:
Range: bytes=0-499
Các giá trị “first-byte-pos” và “last-byte-pos” chỉ định byte đầu tiên và byte cuối cùng của nội dung được bao gồm nhưng không nhất thiết phải được chỉ định cả hai. Nhiều khu vực nội dung có thể được phân tách bằng dấu phẩy.
2.10. Referrer
Cho phép khách hàng chỉ định URL của nguồn tài nguyên request tới
Referer: <url>
2.11. User-Agent
Trường header này gửi thông tin về client đến server
User-Agent: <product> / <product-version> <comment>
Kết
Qua bài viết trên, mong các bạn đã hiểu về HTTP Header cũng như các trường Header của HTTP Request. Stringee còn rất nhiều các bài viết hay khác liên quan đến HTTP các bạn có thể tham khảo thêm tại đây:
- HTTP là gì? Tìm hiểu về giao thức HTTP và HTTPS
- HTTP request là gì? Các phương thức HTTP request
- Hướng dẫn cài đặt unix linux
Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.
Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…
Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: