Mã Trạng Thái 300 Multiple Choices Là Gì?

INEZA Felin-Michel

INEZA Felin-Michel

19 tháng 9 2025

Mã Trạng Thái 300 Multiple Choices Là Gì?

Bạn nhấp vào một liên kết, và thay vì được đưa đến một trang mới, bạn thấy điều gì đó lạ lùng: một trang từ máy chủ liệt kê một số tùy chọn khác nhau cho nơi bạn có thể đi tiếp. Đó có thể là một danh sách các định dạng tệp khác nhau cho một tài liệu hoặc các phiên bản ngôn ngữ khác nhau của một trang web. Bạn, người dùng, được trao quyền lựa chọn.

Hành vi bất thường này là mục đích dự định của một trong những mã trạng thái HTTP mơ hồ và ít được hiểu nhất: 300 Multiple Choices.

Nhưng bạn đã bao giờ gặp phải 300 Multiple Choices chưa?

Thoạt nhìn, nó nghe có vẻ mơ hồ như thể máy chủ không thể quyết định. Và theo một cách nào đó, điều đó khá đúng! Mã trạng thái 300 Multiple Choices được sử dụng khi có nhiều hơn một tài nguyên khả thi có sẵn cho yêu cầu của máy khách. Thay vì chỉ chọn một, máy chủ nói với máy khách:

"Này, có nhiều phản hồi hợp lệ. Bạn cần chọn cái nào bạn muốn."

Không giống như các mã chuyển hướng dứt khoát như 301 Moved Permanently302 Found, vốn cho trình duyệt biết chính xác nơi cần đến, mã 300 giống như một gợi ý hơn. Đó là cách máy chủ nói, "Tôi có một số đại diện khác nhau cho những gì bạn yêu cầu. Tôi không chắc bạn muốn cái nào, vì vậy tôi sẽ để bạn, hoặc trình duyệt của bạn, chọn."

Nó tương đương với việc hỏi đường và được đưa một bản đồ với một số tuyến đường tiềm năng được đánh dấu thay vì được chỉ vào một con đường duy nhất.

Nếu bạn là nhà phát triển hoặc người dùng web tò mò, việc hiểu mã này là một cuộc lặn thú vị vào một con đường ít được biết đến về cách web *có thể* đã hoạt động.

Trong bài đăng blog toàn diện này, chúng ta sẽ giải thích ý nghĩa của mã trạng thái 300 Multiple Choices, tại sao và khi nào nó được sử dụng, cách nó ảnh hưởng đến giao tiếp máy khách-máy chủ, và cách bạn, với tư cách là nhà phát triển, có thể xử lý nó một cách hiệu quả. Nếu bạn muốn giả lập và kiểm tra các mã trạng thái bất thường như 300 Multiple Choices, bạn không cần phải tạo một máy chủ tùy chỉnh từ đầu. Bạn có thể sử dụng Apidog, một nền tảng tất cả trong một để thiết kế API, giả lập, kiểm thử, gỡ lỗitài liệu hóa. Với Apidog, bạn có thể mô phỏng phản hồi 300 Multiple Choices và xem ứng dụng của bạn phản ứng như thế nào, giúp bạn kiểm soát tốt hơn hành vi API của mình. Và điều tuyệt vời nhất? Bạn có thể tải xuống miễn phí.

nút

Bây giờ, hãy cùng khám phá mọi thứ bạn cần biết về mã trạng thái HTTP 300 Multiple Choices.

Mã Trạng Thái HTTP 300 Multiple Choices Là Gì?

Mã trạng thái 300 Multiple Choices là một phần của lớp mã phản hồi HTTP **3xx Redirection**. Khi một máy chủ trả về phản hồi 300, nó cho biết rằng yêu cầu có nhiều hơn một phản hồi khả thi. Nói cách khác, tài nguyên được yêu cầu tương ứng với nhiều tùy chọn có sẵn. Máy chủ gửi một danh sách các tùy chọn này cho máy khách, cho phép máy khách chọn tài nguyên mà nó muốn truy cập.

Thay vì gửi lại một phiên bản duy nhất, máy chủ cung cấp một danh sách các tùy chọn để máy khách có thể quyết định lấy cái nào.

Ví dụ:

Nói tóm lại, 300 có nghĩa là:

"Tôi đã tìm thấy thứ bạn muốn, nhưng bạn có nhiều lựa chọn hợp lệ. Bạn muốn cái nào?"

Hãy nghĩ về nó như việc gọi món ở một nhà hàng: khi người phục vụ giải thích một số món ăn đều hợp lệ, bạn sẽ được chọn món mình muốn. Tương tự, phản hồi 300 trình bày các tùy chọn cho máy khách.

Nguồn Gốc Của Mã Trạng Thái 300

Phản hồi **300 Multiple Choices** được giới thiệu trong **đặc tả HTTP/1.1 (RFC 7231)**. Lý do rất đơn giản:

Nó được thiết kế để cung cấp sự linh hoạt và kiểm soát cho máy khách.

Tại Sao 300 Multiple Choices Lại Tồn Tại?

Bạn có thể tự hỏi, tại sao không chỉ chuyển hướng đến một tài nguyên cụ thể và sử dụng chuyển hướng 301 hoặc 302? Lý do 300 Multiple Choices tồn tại là để cung cấp sự minh bạch và lựa chọn.

Một số kịch bản yêu cầu cung cấp cho máy khách nhiều hơn một tùy chọn cho một tài nguyên, thay vì giả định những gì họ muốn. Đó là một cách để máy chủ nói: "Này, đây là một số kết quả phù hợp khả thi cho yêu cầu đó. Bạn quyết định cái nào phù hợp nhất."

Cách tiếp cận này có thể cải thiện trải nghiệm người dùng, hỗ trợ nội dung đa ngôn ngữ hoặc đa định dạng, và làm cho API linh hoạt hơn.

Cách Nó Được Cho Là Hoạt Động: Một Ví Dụ Lý Thuyết

Khi một máy chủ trả về mã trạng thái 300, nó thường bao gồm một phần thân phản hồi hoặc các tiêu đề cho biết các tùy chọn có sẵn khác nhau. Máy khách sau đó sử dụng thông tin này để quyết định tài nguyên nào sẽ yêu cầu tiếp theo.

Hãy tưởng tượng một kịch bản cho một trang web trường đại học.

1. Yêu cầu: Một người dùng từ đâu đó trên thế giới yêu cầu trang chủ.

GET / HTTP/1.1Host: www.university.example

2. Tình thế khó xử của máy chủ: Máy chủ có trang chủ bằng tiếng Anh, tiếng Tây Ban Nha và tiếng Pháp. Nó không biết người dùng thích ngôn ngữ nào. Thay vì đoán (ví dụ: bằng cách sử dụng tiêu đề Accept-Language), nó quyết định để người dùng chọn.

3. Phản hồi 300:

HTTP/1.1 300 Multiple ChoicesContent-Type: text/html; charset=utf-8

<html>
<head><title>Chọn Ngôn Ngữ</title></head>
<body>
  <h1>Vui lòng chọn ngôn ngữ bạn muốn:</h1>
  <ul>
    <li><a href="/en">Tiếng Anh</a></li>
    <li><a href="/es">Tiếng Tây Ban Nha</a></li>
    <li><a href="/fr">Tiếng Pháp</a></li>
  </ul>
</body>
</html>

Máy chủ cũng có thể bao gồm các gợi ý nâng cao hơn có thể đọc được bằng máy trong các tiêu đề, như tiêu đề Link, mặc dù điều này hiếm khi được triển khai.

4. Hành động của người dùng: Người dùng thấy trang này trong trình duyệt của họ và nhấp vào "English."

5. Chuyển hướng: Trình duyệt sau đó tạo một yêu cầu mới đến /en, và máy chủ phản hồi bằng trang chủ tiếng Anh và trạng thái 200 OK.

Điều này có thể xảy ra tự động trong trình duyệt hoặc theo chương trình trong API.

Lỗi Chí Mạng: Tại Sao 300 Multiple Choices Hiếm Khi Được Sử Dụng

Điều này có vẻ hợp lý, vậy tại sao mã này hầu như không bao giờ được bắt gặp trên web hiện đại? Các vấn đề rất nhiều và cơ bản.

1. Nó phá vỡ tự động hóa: Web hoạt động dựa trên các trình duyệt tự động, tập lệnh, API, trình thu thập dữ liệu của công cụ tìm kiếm. Các tác nhân này mong đợi các hướng dẫn rõ ràng. Phản hồi 300 buộc con người phải đưa ra lựa chọn, làm dừng mọi quy trình tự động. Một trình thu thập dữ liệu sẽ không biết liên kết nào để theo dõi.

2. Trải nghiệm người dùng (UX) kém: Đó là một trải nghiệm cồng kềnh, gây gián đoạn cho người dùng. Thực hành tốt nhất hiện đại là:

3. Nó không hiệu quả: Nó yêu cầu một chuyến đi khứ hồi bổ sung (yêu cầu -> 300 -> lựa chọn của người dùng -> yêu cầu mới) thay vì một chuyển hướng tự động, đơn giản.

4. Sự mơ hồ: Đặc tả HTTP không định nghĩa chặt chẽ cách các lựa chọn nên được trình bày. Nó có nên là một trang HTML? Một định dạng XML cụ thể? Việc thiếu một tiêu chuẩn này làm cho nó không đáng tin cậy để máy móc phân tích.

Các Kịch Bản Phổ Biến Cho 300 Multiple Choices

Hãy cùng khám phá một số trường hợp sử dụng mà 300 Multiple Choices có thể hữu ích:

Phản Hồi 300 Trông Như Thế Nào?

Định dạng chính xác của phản hồi 300 có thể khác nhau, tùy thuộc vào máy chủ và trường hợp sử dụng, nhưng thông thường nó chứa một danh sách hoặc các liên kết.

Dưới đây là một ví dụ đơn giản về phản hồi với các liên kết trong phần thân thông báo:

textHTTP/1.1 300 Multiple Choices Content-Type: text/html
<html> 
<body> 
<h1>Nhiều Lựa Chọn</h1> <ul> 
<li><a href="/resource1.html">Tài nguyên 1</a></li> 
<li><a href="/resource2.html">Tài nguyên 2</a></li> 
<li><a href="/resource3.html">Tài nguyên 3</a></li> </ul> 
</body> 
</html>

Điều này cho phép máy khách hoặc người dùng nhấp hoặc chọn tài nguyên họ muốn.

Xử Lý 300 Multiple Choices Ở Phía Máy Khách

Khi máy khách của bạn gặp phản hồi 300, đây là những gì nó nên làm:

Nhiều trình duyệt có thể nhắc người dùng chọn thủ công, nhưng API thường cần tự động hóa logic này.

300 Multiple Choices so với Các Mã Trạng Thái 3xx Khác

Để hiểu rõ hơn về 300, hãy so sánh nó với các mã 3xx phổ biến khác:

Mã Trạng Thái Mô Tả Khi Nào Sử Dụng
300 Multiple Choices Nhiều tùy chọn cho tài nguyên được yêu cầu Khi máy khách nên chọn từ nhiều biểu diễn
301 Moved Permanently Tài nguyên đã được di chuyển vĩnh viễn Sử dụng nếu một tài nguyên đã chuyển đến một vị trí mới duy nhất
302 Found Chuyển hướng tạm thời Tạm thời chuyển hướng máy khách đến một tài nguyên khác
303 See Other Chuyển hướng bằng GET đến một tài nguyên khác Sau POST, chuyển hướng máy khách đến URL truy xuất
304 Not Modified Tài nguyên được lưu vào bộ nhớ cache, không thay đổi Sử dụng để tối ưu hóa bộ nhớ cache

Không giống như 301 hoặc 302 vốn tự động chuyển hướng máy khách, 300 yêu cầu đầu vào từ máy khách.

300 so với Các Mã Chuyển Hướng Khác

Ý Nghĩa Trường Hợp Sử Dụng Điển Hình
300 Nhiều Lựa Chọn Nhiều ngôn ngữ, định dạng hoặc chất lượng
301 Đã Di Chuyển Vĩnh Viễn URL mới vĩnh viễn
302 Đã Tìm Thấy Chuyển hướng tạm thời
303 Xem Khác Chuyển hướng sau POST đến tài nguyên khác
304 Không Sửa Đổi Phiên bản đã lưu vào bộ nhớ cache vẫn hợp lệ

Những Thách Thức Khi Sử Dụng 300 Multiple Choices

Mặc dù 300 Multiple Choices có thể hữu ích, nhưng nó cũng đặt ra một số thách thức:

Tại Sao Các Nhà Phát Triển Vẫn Nên Biết Về 300 Multiple Choices

Mặc dù 300 Multiple Choices không phổ biến, nhưng việc hiểu nó rất quan trọng vì một vài lý do:

Triển Khai 300 Multiple Choices: Các Thực Hành Tốt Nhất

Nếu bạn quyết định sử dụng 300 Multiple Choices cho máy chủ hoặc API của mình, đây là một số mẹo:

Các Ví Dụ Thực Tế Về 300 Multiple Choices

Ví Dụ 1: Các Biến Thể Ngôn Ngữ

Một trang web đa ngôn ngữ cung cấp các trang tiếng Anh, tiếng Tây Ban Nha và tiếng Pháp cho cùng một đường dẫn tài nguyên, trả về 300 để người dùng có thể chọn.

GET /docs HTTP/1.1

Phản hồi:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json

{
  "available_variants": [
    { "ngôn ngữ": "en", "url": "/docs/en" },
    { "ngôn ngữ": "es", "url": "/docs/es" },
    { "ngôn ngữ": "zh", "url": "/docs/zh" }
  ]
}

Ví Dụ 2: Định Dạng Nội Dung

Một dịch vụ chia sẻ tệp có thể trình bày các liên kết tải xuống cho các loại tệp gốc, nén hoặc thay thế.

GET /data HTTP/1.1

Phản hồi:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json
{
  "available_formats": [
    { "type": "application/json", "url": "/data.json" },
    { "type": "application/xml", "url": "/data.xml" },
    { "type": "text/html", "url": "/data.html" }
  ]
}

Ví Dụ 3: Chất Lượng Phương Tiện

Một điểm cuối API phục vụ hình ảnh có thể trả về 300 với các tùy chọn cho các độ phân giải hoặc định dạng khác nhau.

GET /video HTTP/1.1

Phản hồi:

HTTP/1.1 300 Multiple Choices
Content-Type: application/json

{
  "resolutions": [
    { "quality": "480p", "url": "/video-480.mp4" },
    { "quality": "720p", "url": "/video-720.mp4" },
    { "quality": "1080p", "url": "/video-1080.mp4" }
  ]
}

Lợi Ích Khi Sử Dụng 300 Multiple Choices

Sử dụng 300 Multiple Choices nghe có vẻ hiếm, nhưng nó có một số lợi ích thực sự:

Những Cạm Bẫy Và Hiểu Lầm Phổ Biến

Kiểm Thử Phản Hồi 300 Với Apidog

Tài liệu quảng cáo Apidog-27

Mặc dù bạn có thể sẽ không bao giờ xây dựng một API trả về 300, nhưng việc hiểu cách kiểm thử tất cả các mã trạng thái có thể có là dấu hiệu của một nhà phát triển kỹ lưỡng. Apidog là công cụ hoàn hảo để khám phá những sắc thái HTTP này.

Với Apidog, bạn có thể:

  1. Giả lập phản hồi 300: Tạo một điểm cuối giả lập trong Apidog trả về trạng thái 300 với phần thân HTML tùy chỉnh liệt kê các lựa chọn. Điều này rất tuyệt để kiểm thử cách ứng dụng của bạn sẽ xử lý kịch bản bất thường này.
  2. Kiểm thử khả năng phục hồi của máy khách: Sử dụng điểm cuối giả lập của bạn để đảm bảo ứng dụng máy khách của bạn (ví dụ: ứng dụng di động hoặc tập lệnh) không bị lỗi khi nhận được 300 không mong muốn và có chiến lược dự phòng.
  3. So sánh với các thực hành hiện đại: Sử dụng Apidog để kiểm thử thương lượng nội dung phù hợp. Tạo các yêu cầu với các tiêu đề AcceptAccept-Language khác nhau và xác minh rằng máy chủ của bạn phản hồi chính xác bằng các chuyển hướng 302 đến tài nguyên thích hợp.
  4. Tài liệu hóa hành vi: Nếu bạn cần sử dụng 300, bạn có thể sử dụng Apidog để tài liệu hóa định dạng phản hồi và các lựa chọn dự kiến cho các nhà phát triển khác.
nút

Bằng cách này, bạn không cần phải cấu hình thủ công một phần phụ trợ chỉ để mô phỏng các trường hợp đặc biệt. Tải xuống Apidog miễn phí và kiểm soát quá trình kiểm thử API của bạn ngay cả đối với các mã trạng thái HTTP phức tạp hơn như 300.

Các Thực Hành Tốt Nhất Cho Nhà Phát Triển

Những Cân Nhắc Nâng Cao Cho Các Nhà Thiết Kế API

Các Giải Pháp Thay Thế Hiện Đại, Tốt Hơn

Ngày nay, các kịch bản mà một 300 có thể đã được sử dụng được xử lý theo những cách tốt hơn nhiều:

1. Để Thương Lượng Nội Dung (Ngôn Ngữ, Định Dạng):

Đây là tính năng nổi bật đã làm cho 300 trở nên lỗi thời. Máy khách có thể nêu rõ sở thích của mình ngay từ đầu bằng cách sử dụng các tiêu đề, và máy chủ có thể tự động chuyển hướng đến tùy chọn tốt nhất.

Máy chủ sau đó có thể tự động gửi chuyển hướng 302 Found hoặc 303 See Other đến tài nguyên phù hợp nhất (/en/index.html hoặc /data.json), hoàn toàn bỏ qua nhu cầu lựa chọn thủ công.

2. Đối Với Nhiều Biểu Diễn:

Nếu một tài nguyên có nhiều định dạng (ví dụ: PDF, DOCX, TXT), cách tiếp cận hiện đại là cung cấp các liên kết đến tất cả chúng trên một trang đích 200 OK duy nhất, chứ không phải sử dụng phản hồi 300.

Kết Luận: Nắm Bắt HTTP 300 Multiple Choices Trong Phát Triển Của Bạn

HTTP 300 Multiple Choices là một phần thú vị của hệ sinh thái HTTP thường bị ẩn khỏi việc sử dụng hàng ngày. Mục đích của nó là cung cấp nhiều tùy chọn hợp lệ cho một tài nguyên, mang lại sự linh hoạt cho cả máy chủ và máy khách, đặc biệt khi xử lý nội dung đa định dạng, đa phiên bản.

Đối với các nhà phát triển ngày nay, bài học từ 300 là phải trân trọng sự tinh tế của các giải pháp web hiện đại. Việc sử dụng các tiêu đề để thương lượng nội dung và các chuyển hướng 3xx dứt khoát mang lại trải nghiệm nhanh hơn, đáng tin cậy hơn và tự động hơn cho cả người dùng và máy móc.

Cuối cùng, web đã phát triển theo một hướng khác – hướng tự động hóa, thương lượng nội dung rõ ràng và trải nghiệm người dùng liền mạch. Mã 300 vẫn còn trong đặc tả, một bóng ma của một tương lai tiềm năng chưa bao giờ thành hiện thực.

**Mã trạng thái 300 Multiple Choices** là một trong những mã HTTP không xuất hiện hàng ngày nhưng khi nó xuất hiện, nó rất mạnh mẽ.

Nó nói với máy khách:

"Có nhiều tài nguyên hợp lệ ở đây. Bạn quyết định cái nào là tốt nhất."

Điều này đặc biệt hữu ích trong **các ứng dụng đa ngôn ngữ, API cung cấp nhiều định dạng hoặc phương tiện có các mức chất lượng khác nhau**.

Mặc dù việc áp dụng nó còn hạn chế, nhưng nó thể hiện **sự linh hoạt được tích hợp trong HTTP,** việc hiểu 300 cải thiện sự nắm bắt của bạn về giao tiếp web và chuẩn bị cho bạn các trường hợp đặc biệt hoặc các yêu cầu API chuyên biệt.

Và hãy nhớ rằng, để kiểm thử và tài liệu hóa hiệu quả các API có thể trả về 300 Multiple Choices hoặc bất kỳ mã trạng thái nào khác, **tải xuống** Apidog miễn phí là một bước khởi đầu tuyệt vời. Apidog đơn giản hóa tương tác với các phản hồi mã HTTP phức tạp và tăng cường năng suất của bạn.

nút

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