Mã Trạng Thái 505: Lỗi Phiên Bản HTTP Không Được Hỗ Trợ?

INEZA Felin-Michel

INEZA Felin-Michel

27 tháng 10 2025

Mã Trạng Thái 505: Lỗi Phiên Bản HTTP Không Được Hỗ Trợ?

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Bạn đang thử nghiệm một ứng dụng khách HTTP mới, tiên tiến sử dụng giao thức HTTP/3 mới nhất. Bạn gửi một yêu cầu đến một máy chủ cũ hơn, mong đợi một phản hồi, nhưng thay vào đó bạn nhận được một lỗi thẳng thừng và có phần khó hiểu: 505 HTTP Version Not Supported.

Mã trạng thái này đại diện cho một sự cố giao tiếp cơ bản không phải ở cấp ứng dụng, mà ở chính nền tảng cách máy khách và máy chủ đang cố gắng giao tiếp với nhau. Nó giống như việc cố gắng trò chuyện bằng một ngôn ngữ mà đối tác của bạn không hiểu.

Trong khi hầu hết các lỗi HTTP đều liên quan đến các vấn đề với nội dung yêu cầu hoặc quá trình xử lý của máy chủ, lỗi 505 cơ bản hơn. Nó liên quan đến các quy tắc cơ bản của cuộc trò chuyện. Máy chủ về cơ bản đang nói, "Tôi thậm chí không hiểu bạn đang cố gắng nói chuyện với tôi bằng cách nào."

Nếu bạn là một nhà phát triển làm việc với các công nghệ web hiện đại hoặc duy trì các hệ thống cũ, việc hiểu mã này có thể giúp bạn tránh được một số phiên gỡ lỗi khó hiểu.

Trước khi chúng ta đi sâu vào các chi tiết kỹ thuật, nếu bạn đang xây dựng hoặc kiểm thử API trên các môi trường khác nhau, bạn cần một công cụ có thể giúp bạn quản lý các vấn đề tương thích cấp giao thức này. Tải xuống Apidog miễn phí; đây là một nền tảng API tất cả trong một xử lý sự khác biệt giao thức HTTP một cách liền mạch, cho phép bạn tập trung vào việc xây dựng logic ứng dụng của mình thay vì lo lắng về các đàm phán giao thức.

button

Bây giờ, hãy cùng khám phá thế giới các phiên bản HTTP và điều gì xảy ra khi chúng không khớp nhau.

Sự Phát Triển của HTTP: Lịch Sử Tóm Tắt

Để hiểu lỗi 505, chúng ta cần hiểu HTTP đã phát triển như thế nào theo thời gian. Hãy coi các phiên bản HTTP như những phiên bản khác nhau của một cuốn sổ tay quy tắc để giao tiếp web.

Hầu hết các trang web ngày nay chạy trên HTTP/1.1, với sự chấp nhận ngày càng tăng của HTTP/2 và HTTP/3. Lỗi 505 xảy ra khi có sự không khớp giữa những gì máy khách muốn sử dụng và những gì máy chủ có thể xử lý.

HTTP 505 Version Not Supported Thực Sự Có Nghĩa Là Gì?

Mã trạng thái 505 HTTP Version Not Supported cho biết rằng máy chủ không hỗ trợ, hoặc từ chối hỗ trợ, phiên bản chính của HTTP đã được sử dụng trong thông điệp yêu cầu.

Máy chủ về cơ bản đang nói: "Tôi đã nhận được yêu cầu của bạn, nhưng bạn đang sử dụng một phiên bản HTTP mà tôi không hiểu hoặc sẽ không chấp nhận. Tôi không thể xử lý điều này."

Một phản hồi 505 điển hình trông như thế này:

HTTP/1.1 505 HTTP Version Not SupportedContent-Type: text/htmlContent-Length: 175
<html><head><title>505 HTTP Version Not Supported</title></head><body><center><h1>505 HTTP Version Not Supported</h1></center></body></html>

Bạn có nhận thấy điều gì thú vị không? Máy chủ phản hồi bằng HTTP/1.1, mặc dù nó đang từ chối phiên bản của máy khách. Điều này là do máy chủ cần sử dụng một phiên bản mà nó hiểu để thông báo lỗi.

Nói một cách đơn giản hơn:

Ứng dụng khách của bạn (như trình duyệt, ứng dụng hoặc công cụ kiểm thử API) gửi một yêu cầu với một phiên bản HTTP, chẳng hạn như HTTP/2 hoặc HTTP/3. Nhưng máy chủ nói,

"Xin lỗi, tôi chỉ nói HTTP/1.1. Hãy thử lại với phiên bản đó."

Mã trạng thái này là một phần của lớp phản hồi 5xx của máy chủ, tất cả đều cho biết một vấn đề phía máy chủ. Tuy nhiên, không giống như 500 (Lỗi Máy chủ Nội bộ) hoặc 503 (Dịch vụ Không khả dụng), một lỗi 505 không nhất thiết có nghĩa là có điều gì đó bị hỏng. Nó thiên về khả năng tương thích.

Khi nào nên mong đợi lỗi 505

Lỗi 505 phổ biến nhất trong các môi trường mà:

Vì đây là vấn đề tương thích phiên bản, nó thường tiết lộ các quyết định kiến trúc sâu sắc hơn về hỗ trợ máy khách và hiện đại hóa cơ sở hạ tầng.

Cách Phiên bản HTTP được Giao Tiếp

Mỗi yêu cầu HTTP bắt đầu bằng một "dòng yêu cầu" chỉ định phương thức, đường dẫn và phiên bản HTTP. Đây là cách nó trông như thế nào đối với các phiên bản khác nhau:

Yêu cầu HTTP/1.1:

GET /api/users HTTP/1.1Host: example.com

Yêu cầu HTTP/2: (Thực tế sử dụng định dạng nhị phân, nhưng về mặt khái niệm):

:method = GET
:path = /api/users
:scheme = https

Yêu cầu HTTP/3: (Sử dụng các khung QUIC, cũng tương tự về mặt khái niệm)

Máy chủ kiểm tra dòng/khung ban đầu này để xác định phiên bản nào mà máy khách đang sử dụng.

Các Tình Huống Phổ Biến Gây Ra Lỗi 505

1. Các Phiên bản HTTP Thử Nghiệm hoặc Tùy Chỉnh

Một nhà phát triển có thể thử nghiệm một phiên bản HTTP tùy chỉnh hoặc sử dụng một phiên bản thử nghiệm lỗi thời mà máy chủ không nhận ra.

GET /api/data HTTP/2.5Host: example.com

Nếu máy chủ chỉ hiểu đến HTTP/2, nó sẽ từ chối điều này với lỗi 505.

2. Máy Khách hoặc Máy Chủ Bị Cấu Hình Sai

Một máy khách có thể bị cấu hình sai để yêu cầu một phiên bản HTTP cao hơn so với phiên bản mà máy chủ hỗ trợ, hoặc một máy chủ có thể bị cấu hình sai để từ chối các phiên bản mà nó nên hỗ trợ.

3. Hệ Thống Cũ

Một máy chủ cũ chỉ hiểu HTTP/1.0 có thể nhận được yêu cầu HTTP/1.1 và phản hồi bằng 505, mặc dù hầu hết các máy chủ hiện đại đều tương thích ngược.

4. Lỗi Nâng Cấp Giao Thức

Trong quá trình đàm phán HTTP/2 hoặc HTTP/3, nếu có điều gì đó không ổn trong quá trình bắt tay, nó có thể dẫn đến lỗi 505.

Thực Tế: Tại Sao Lỗi 505 Lại Hiếm Gặp

Đây là điều thú vị: bạn sẽ hầu như không bao giờ thấy lỗi 505 trong thực tế ngày nay. Đây là lý do:

  1. Khả năng tương thích ngược: Các máy chủ web và ứng dụng khách hiện đại được thiết kế để tương thích ngược. Một máy chủ hỗ trợ HTTP/2 hầu như luôn hỗ trợ các yêu cầu HTTP/1.1.
  2. Giảm cấp linh hoạt: Khi một ứng dụng khách muốn sử dụng một giao thức mới hơn như HTTP/2 hoặc HTTP/3, nó thường bắt đầu với một yêu cầu HTTP/1.1 và sau đó đàm phán nâng cấp. Nếu việc nâng cấp thất bại, nó sẽ quay trở lại HTTP/1.1 thay vì ngay lập tức thất bại với lỗi 505.
  3. Hỗ trợ HTTP/1.1 rộng rãi: HTTP/1.1 đã là tiêu chuẩn trong một thời gian dài đến nỗi hầu như mọi máy chủ trên internet đều hỗ trợ nó.

Kiểm Tra Khả Năng Tương Thích Giao Thức với Apidog

Mặc dù bạn có thể không thường xuyên gặp lỗi 505, nhưng việc kiểm tra cách ứng dụng của bạn xử lý các phiên bản HTTP khác nhau vẫn rất có giá trị. Apidog giúp quá trình này trở nên đơn giản.

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

  1. Kiểm tra các yêu cầu tiêu chuẩn: Đảm bảo API của bạn hoạt động chính xác với giao thức HTTP/1.1 phổ biến nhất.
  2. Mô phỏng các kịch bản khác nhau: Tạo các trường hợp kiểm thử mô phỏng điều gì có thể xảy ra nếu ứng dụng của bạn gặp một máy chủ chỉ hỗ trợ các phiên bản HTTP cũ hơn.
  3. Xác thực xử lý lỗi: Kiểm tra cách ứng dụng khách của bạn xử lý các lỗi máy chủ khác nhau, bao gồm cả phản hồi 505.
  4. Tài liệu hóa các yêu cầu giao thức: Sử dụng Apidog để tài liệu hóa các phiên bản HTTP mà API của bạn hỗ trợ, cung cấp hướng dẫn rõ ràng cho người dùng.
  5. Kiểm tra tiêu đề nâng cấp: Nếu bạn đang triển khai hỗ trợ HTTP/2 hoặc HTTP/3, bạn có thể sử dụng Apidog để kiểm tra quá trình đàm phán nâng cấp.
button

Việc kiểm thử chủ động này giúp đảm bảo các ứng dụng của bạn mạnh mẽ và có thể xử lý các cấu hình máy chủ khác nhau một cách linh hoạt. Apidog cũng tích hợp vào các đường dẫn CI/CD, cho phép các nhóm tự động kiểm tra các lỗi liên quan đến giao thức trong quá trình xây dựng.

505 so với các lỗi 5xx khác

Việc phân biệt 505 với các lỗi máy chủ khác là hữu ích:

Lỗi 505 cơ bản hơn các lỗi khác – đó là lỗi cấp giao thức chứ không phải lỗi cấp ứng dụng.

Cách khắc phục lỗi 505

Nếu bạn gặp lỗi 505, đây là các bước để giải quyết nó:

Đối với các nhà phát triển máy khách:

  1. Kiểm tra ứng dụng khách HTTP của bạn: Đảm bảo thư viện ứng dụng khách HTTP của bạn không được cấu hình để sử dụng phiên bản HTTP thử nghiệm hoặc không được hỗ trợ.
  2. Triển khai logic dự phòng: Thiết kế ứng dụng khách của bạn để tự động chuyển về HTTP/1.1 nếu các giao thức mới hơn không được hỗ trợ.
  3. Cập nhật thư viện của bạn: Đảm bảo bạn đang sử dụng các thư viện ứng dụng khách HTTP đã được cập nhật xử lý đàm phán giao thức đúng cách.

Đối với quản trị viên máy chủ:

  1. Xác minh cấu hình máy chủ: Kiểm tra xem máy chủ web của bạn (Apache, Nginx, v.v.) có được cấu hình để hỗ trợ các phiên bản HTTP mà bạn mong đợi hay không.
  2. Cập nhật phần mềm máy chủ: Các phiên bản máy chủ cũ hơn có thể không hỗ trợ các giao thức HTTP mới hơn. Cân nhắc cập nhật nếu bạn cần hỗ trợ HTTP/2 hoặc HTTP/3.
  3. Kiểm tra cài đặt bộ cân bằng tải: Nếu bạn đang sử dụng bộ cân bằng tải hoặc proxy ngược, hãy đảm bảo nó được cấu hình đúng cách để xử lý các phiên bản HTTP khác nhau.

Tương lai: HTTP/3 và hơn thế nữa

Khi HTTP/3 ngày càng được áp dụng rộng rãi hơn, chúng ta có thể thấy nhiều vấn đề liên quan đến giao thức hơn, mặc dù chúng có thể sẽ được xử lý thông qua các cơ chế dự phòng linh hoạt thay vì lỗi 505. Hệ sinh thái web đã học được rằng việc phá vỡ khả năng tương thích nói chung là một ý tưởng tồi, vì vậy hầu hết các thay đổi đều được thiết kế để tương thích ngược.

Khía cạnh con người: Giao tiếp trong quá trình không tương thích

Khi xảy ra sự không khớp phiên bản, việc giao tiếp rõ ràng với các nhà phát triển và người dùng về các giao thức được hỗ trợ là điều cần thiết. Cung cấp tài liệu, hướng dẫn nâng cấp và cập nhật trạng thái để giảm thiểu sự nhầm lẫn và duy trì niềm tin trong quá trình hiện đại hóa.

Các Thực Hành Tốt Nhất để Xử Lý Giao Thức

Đối với Người Dùng API:

Đối với Nhà Cung cấp API:

Kết Luận: Người Bảo Vệ Tính Toàn Vẹn Của Giao Thức

Mã trạng thái HTTP 505 HTTP Version Not Supported phục vụ một mục đích quan trọng như người bảo vệ tính toàn vẹn của giao thức. Mặc dù bạn có thể hiếm khi gặp phải nó trong thực tế, việc hiểu ý nghĩa của nó cung cấp cái nhìn sâu sắc có giá trị về cách giao tiếp HTTP hoạt động ở cấp độ cơ bản nhất.

Lỗi này nhắc nhở chúng ta rằng web được xây dựng trên các tiêu chuẩn đang phát triển, và khả năng tương thích giữa các thành phần khác nhau là rất quan trọng để mọi thứ hoạt động trơn tru. Hầu hết thời gian, cơ sở hạ tầng của web xử lý những khác biệt giao thức này một cách khéo léo đến mức chúng ta thậm chí không bao giờ nhận thấy chúng.

Đối với các nhà phát triển, điểm mấu chốt là sử dụng các thư viện HTTP được duy trì tốt để tự động xử lý đàm phán giao thức, và kiểm tra các ứng dụng của bạn trong các môi trường mô phỏng cơ sở hạ tầng sản xuất của bạn. Và khi bạn cần một công cụ đáng tin cậy để kiểm tra API của mình trong các tình huống khác nhau, Apidog cung cấp nền tảng toàn diện mà bạn cần để đảm bảo các ứng dụng của bạn hoạt động chính xác, bất kể phiên bản giao thức HTTP cơ bản là gì.

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