Cách sử dụng tiêu đề Accept trong HTTP?

Tiêu đề Accept của HTTP là một tiêu đề yêu cầu cho biết loại nội dung mà khách hàng có thể hiểu. Tìm hiểu cách sử dụng nó để đàm phán nội dung và xem một số ví dụ.

Minh Triết

Minh Triết

5 tháng 6 2025

Cách sử dụng tiêu đề Accept trong HTTP?

Nếu bạn là một nhà phát triển web, bạn có thể biết tầm quan trọng của việc giao tiếp hiệu quả với các máy chủ web lưu trữ ứng dụng của bạn. Bạn cần gửi các yêu cầu đúng và nhận các phản hồi chính xác, để ứng dụng của bạn có thể hoạt động đúng cách và cung cấp trải nghiệm người dùng tuyệt vời. Nhưng bạn có biết cách sử dụng tiêu đề chấp nhận HTTP để tối ưu hóa giao tiếp này và làm cho ứng dụng của bạn linh hoạt và hiệu quả hơn không? Nếu không, đừng lo lắng.

Trong bài viết blog này, tôi sẽ dạy bạn mọi thứ bạn cần biết về tiêu đề chấp nhận HTTP và cách sử dụng các công cụ như Apidog để kiểm tra và gỡ lỗi các yêu cầu và phản hồi HTTP của bạn.

button

Tiêu đề Chấp nhận HTTP là gì và nó hoạt động như thế nào?

Tiêu đề chấp nhận HTTP là một phần của thông điệp yêu cầu. Đây là cách để khách hàng thông báo cho máy chủ biết loại nội dung nào họ có thể chấp nhận và xử lý. Nội dung có thể là bất cứ thứ gì mà máy chủ có thể cung cấp, chẳng hạn như HTML, XML, JSON, hình ảnh, video, âm thanh, v.v. Tiêu đề chấp nhận HTTP có định dạng sau:

Accept: media-type, media-type, ...

media-type là một chuỗi xác định loại và loại phụ của nội dung, chẳng hạn như text/html, application/json, image/jpeg, v.v. Bạn cũng có thể sử dụng ký tự đại diện để chỉ định bất kỳ loại hoặc loại phụ nào, chẳng hạn như */*, text/*, image/*, v.v. Bạn cũng có thể sử dụng các tham số để cung cấp thêm chi tiết về nội dung, chẳng hạn như chất lượng, ngôn ngữ, mã hóa, v.v. Ví dụ, text/html;q=0.8,en-US có nghĩa là khách hàng có thể chấp nhận tài liệu HTML với chất lượng 0.8 (trên thang điểm 1) và bằng tiếng Anh Mỹ.

Bạn có thể chỉ định nhiều media-type trong tiêu đề chấp nhận HTTP, được phân tách bằng dấu phẩy. Thứ tự của các media-type cho biết sở thích của khách hàng. media-type đầu tiên là ưu tiên nhất, thứ hai là ưu tiên thứ hai, và cứ thế. Ví dụ, Accept: text/html,application/json,image/png nghĩa là khách hàng ưu tiên tài liệu HTML, sau đó là dữ liệu JSON, rồi đến hình ảnh PNG.

Tại sao tiêu đề Chấp nhận HTTP lại quan trọng?

Tiêu đề chấp nhận HTTP là một phương thức mạnh mẽ để thương lượng nội dung giữa khách hàng và máy chủ. Nó cho phép khách hàng yêu cầu các loại nội dung khác nhau dựa trên khả năng và sở thích của họ, và cho phép máy chủ cung cấp nội dung tốt nhất có thể cho khách hàng, dựa trên tính khả dụng và tính tương thích của nó. Điều này có thể cải thiện hiệu suất, hiệu quả và trải nghiệm người dùng của cả khách hàng và máy chủ.

Tiêu đề chấp nhận HTTP quan trọng vì nó giúp máy chủ cung cấp nội dung tốt nhất có thể cho khách hàng, dựa trên khả năng và sở thích của họ. Nó cũng giúp máy chủ tránh gửi dữ liệu không cần thiết hoặc không tương thích mà khách hàng không thể sử dụng hoặc hiển thị. Điều này có thể cải thiện hiệu suất, hiệu quả và trải nghiệm người dùng của cả khách hàng và máy chủ.

Cách sử dụng tiêu đề Chấp nhận HTTP để yêu cầu các loại nội dung khác nhau từ máy chủ

Để viết tiêu đề chấp nhận HTTP trong thông điệp yêu cầu của bạn, bạn cần sử dụng một công cụ hoặc thư viện cho phép bạn gửi các yêu cầu HTTP. Có nhiều công cụ và thư viện có sẵn cho các ngôn ngữ và nền tảng khác nhau, chẳng hạn như curl, Apidog, Axios, Fetch, v.v. Trong ví dụ này, tôi sẽ sử dụng curl, một công cụ dòng lệnh mà bạn có thể sử dụng để gửi các yêu cầu HTTP và nhận các phản hồi HTTP.

Để sử dụng curl, bạn cần gõ lệnh sau trong terminal của bạn:

curl -H "Accept: media-type, media-type, ..." URL

Tùy chọn -H cho phép bạn thêm một tiêu đề vào yêu cầu của bạn. Accept: media-type, media-type, ... là tiêu đề chấp nhận HTTP mà bạn muốn gửi. URL là địa chỉ của máy chủ mà bạn muốn yêu cầu dữ liệu từ đó. Ví dụ, nếu bạn muốn yêu cầu tài liệu HTML từ https://example.com, bạn có thể gõ:

curl -H "Accept: text/html" https://example.com

Điều này sẽ gửi một yêu cầu đến https://example.com với tiêu đề Accept: text/html, có nghĩa là bạn chỉ có thể chấp nhận tài liệu HTML như là một phản hồi.

Để đọc thông điệp phản hồi từ máy chủ, bạn cần xem mã trạng thái, tiêu đề content-type và nội dung của thông điệp.

Ví dụ, nếu bạn gửi yêu cầu curl -H "Accept: text/html" https://example.com, bạn có thể nhận được phản hồi sau:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Example Domain</h1>
<p>Tên miền này được sử dụng trong các ví dụ minh họa trong tài liệu. Bạn có thể sử dụng tên miền này
trong tài liệu mà không cần phối hợp trước hoặc xin phép.</p>
<p><a href="https://www.iana.org/domains/example">Thông tin thêm...</a></p>
</body>
</html>

Mã trạng thái là 200, có nghĩa là yêu cầu đã thành công. Tiêu đề content-type là text/html; charset=UTF-8, có nghĩa là máy chủ đã gửi lại một tài liệu HTML với mã hóa UTF-8.

Bạn có thể sử dụng tiêu đề chấp nhận HTTP để yêu cầu các loại nội dung khác nhau từ máy chủ bằng cách thay đổi media-type trong yêu cầu của bạn. Ví dụ, nếu bạn muốn yêu cầu dữ liệu JSON từ https://example.com, bạn có thể gõ:

curl -H "Accept: application/json" https://example.com

Điều này sẽ gửi một yêu cầu đến https://example.com với tiêu đề Accept: application/json, có nghĩa là bạn chỉ có thể chấp nhận dữ liệu JSON như là một phản hồi. Bạn có thể nhận được phản hồi sau:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "domain": "example.com",
  "purpose": "ví dụ minh họa trong tài liệu",
  "link": "https://www.iana.org/domains/example"
}

Mã trạng thái là 200, có nghĩa là yêu cầu đã thành công. Tiêu đề content-type là application/json, có nghĩa là máy chủ đã gửi lại dữ liệu JSON. Nội dung của thông điệp là dữ liệu JSON chính nó, mà bạn có thể xem trên trình duyệt hoặc trong trang web Apidog.

Bạn cũng có thể yêu cầu nhiều loại nội dung từ máy chủ bằng cách chỉ định hơn một media-type trong yêu cầu của bạn. Ví dụ, nếu bạn muốn yêu cầu tài liệu HTML hoặc dữ liệu JSON từ https://example.com, bạn có thể gõ:

curl -H "Accept: text/html,application/json" https://example.com

Cách xử lý các loại phản hồi khác nhau từ máy chủ dựa trên tiêu đề Chấp nhận HTTP

Đôi khi, máy chủ có thể không thể gửi lại loại nội dung chính xác mà bạn yêu cầu với tiêu đề chấp nhận HTTP. Điều này có thể xảy ra vì nhiều lý do, chẳng hạn như:

Có nhiều mã trạng thái khả thi mà máy chủ có thể gửi lại, nhưng đây là một số mã thông dụng nhất mà bạn có thể gặp khi sử dụng tiêu đề chấp nhận HTTP:

Tiêu đề content-type và nội dung của thông điệp phản hồi cũng có thể thay đổi dựa trên mã trạng thái và media-type mà máy chủ đã gửi lại. Bạn có thể sử dụng các công cụ như Apidog để xem tiêu đề content-type và nội dung của thông điệp một cách thân thiện với người dùng.

Cách sử dụng Apidog để kiểm tra và gỡ lỗi tiêu đề chấp nhận HTTP của tôi?

Apidog là một công cụ trực tuyến giúp bạn kiểm tra, gỡ lỗi và tài liệu API của bạn miễn phí.

button

Để sử dụng Apidog để kiểm tra và gỡ lỗi tiêu đề chấp nhận HTTP của bạn, bạn cần làm theo các bước sau:

Apidog
Apidog

Các thực hành tốt nhất và mẹo sử dụng tiêu đề Chấp nhận HTTP.

Tiêu đề chấp nhận HTTP là một tiêu đề yêu cầu cho biết các loại nội dung nào, được biểu thị dưới dạng loại MIME, mà khách hàng có thể hiểu. Máy chủ sử dụng thương lượng nội dung để chọn một trong các đề xuất và thông báo cho khách hàng về sự lựa chọn với tiêu đề phản hồi Content-Type. Dưới đây là một số thực hành tốt nhất và mẹo khi sử dụng tiêu đề chấp nhận HTTP trong các dự án phát triển web của bạn:

Kết luận

Trong bài viết này, tôi đã giải thích tầm quan trọng của tiêu đề Chấp nhận HTTP và cách nó có thể được sử dụng để thương lượng loại nội dung giữa khách hàng và máy chủ. Tôi cũng đã chỉ cho bạn cách thiết lập tiêu đề Chấp nhận trong các tình huống khác nhau.

Bằng cách sử dụng tiêu đề Chấp nhận, chúng ta có thể đảm bảo rằng máy chủ phản hồi với định dạng phù hợp nhất cho nhu cầu của chúng ta, và tránh các chuyển đổi hoặc lỗi không cần thiết. Tiêu đề Chấp nhận là một trong nhiều tiêu đề HTTP có thể giúp chúng ta xây dựng các ứng dụng web mạnh mẽ và hiệu quả hơn.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API