Mã Lỗi 405 Method Not Allowed Là Gì? Lỗi Sai Phương Thức

INEZA Felin-Michel

INEZA Felin-Michel

30 tháng 9 2025

Mã Lỗi 405 Method Not Allowed Là Gì? Lỗi Sai Phương Thức

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 cố gắng treo một bức tranh lên tường. Bạn có một chiếc tua vít, nhưng thứ bạn thực sự cần là một chiếc búa. Dù bạn cố gắng đến đâu, chiếc tua vít đó cũng không thể đóng được chiếc đinh vào tường. Công cụ bạn đang sử dụng không phù hợp với nhiệm vụ bạn đang cố gắng hoàn thành.

Đây chính là tình huống được ghi lại bởi một trong những mã lỗi cụ thể và hữu ích nhất của HTTP: 405 Method Not Allowed.

Không giống như các lỗi chung chung hơn như 404 Not Found (nghĩa là "Tôi không tìm thấy thứ bạn đang tìm") hoặc 400 Bad Request (nghĩa là "Tôi không hiểu bạn đang nói gì"), lỗi 405 cực kỳ chính xác. Nó có nghĩa là: "Tôi đã tìm thấy tài nguyên bạn đang tìm, nhưng bạn đang sử dụng phương thức HTTP sai để tương tác với nó."

Đó là cách máy chủ nói với bạn: "Tôi biết /api/users là gì, nhưng bạn không thể XÓA nó. Hãy thử sử dụng GET thay vì."

Nếu bạn là nhà phát triển làm việc với các API RESTful, việc hiểu mã trạng thái 405 là rất quan trọng để xây dựng và sử dụng API một cách chính xác.

Trong bài đăng blog chi tiết này, chúng ta sẽ khám phá mọi thứ bạn cần biết về trạng thái 405 Method Not Allowed, từ ý nghĩa, lý do xảy ra, các tình huống phổ biến, cách khắc phục và các phương pháp hay nhất để xử lý nó một cách linh hoạt.

💡
Nếu bạn muốn kiểm tra và gỡ lỗi lỗi này một cách hiệu quả, hãy đảm bảo tải xuống Apidog miễn phí. Apidog là một công cụ kiểm thử và tài liệu API tất cả trong một giúp dễ dàng tương tác với API, phát hiện và khắc phục các lỗi như 405, và hợp lý hóa quy trình làm việc phát triển của bạn.

Tải xuống ứng dụng

Bây giờ, hãy cùng khám phá mục đích, cơ chế và ý nghĩa thực tế của mã trạng thái HTTP 405 Method Not Allowed.

Vấn đề: Các phương thức HTTP và thiết kế RESTful

Để hiểu 405, chúng ta cần nhanh chóng xem lại cách hoạt động của các API RESTful. Trong thiết kế RESTful, cùng một URL có thể hoạt động khác nhau tùy thuộc vào phương thức HTTP (động từ) bạn sử dụng:

Lỗi 405 xảy ra khi bạn cố gắng sử dụng một phương thức mà máy chủ chưa triển khai cho điểm cuối cụ thể đó. Ví dụ, việc cố gắng POST tới /api/users/123 (thường chỉ hỗ trợ GET, PUT, PATCH, DELETE) có thể sẽ trả về 405.

HTTP 405 Method Not Allowed thực sự có nghĩa là gì?

Mã trạng thái 405 Method Not Allowed cho biết rằng máy chủ biết tài nguyên đích (URL bạn đã yêu cầu) tồn tại, nhưng không hỗ trợ phương thức HTTP được sử dụng trong yêu cầu.

Có một yêu cầu quan trọng đối với phản hồi 405 thích hợp: nó phải bao gồm một tiêu đề Allow liệt kê các phương thức HTTP được hỗ trợ cho tài nguyên được yêu cầu.

Một phản hồi 405 thích hợp trông như thế này:

HTTP/1.1 405 Method Not AllowedAllow: GET, HEAD, OPTIONSContent-Type: application/json
{
  "error": "Method Not Allowed",
  "message": "POST method is not supported for this endpoint."
}

Hãy cùng phân tích thành phần chính:

Nói một cách đơn giản, máy khách đã gửi một phương thức HTTP hợp lệ như GET, POST, PUT, DELETE, v.v., nhưng máy chủ không cho phép phương thức cụ thể đó trên URL hoặc điểm cuối được yêu cầu.

Tại sao lỗi 405 lại xảy ra?

Lỗi 405 xảy ra khi phương thức được sử dụng trong yêu cầu HTTP không được phép đối với tài nguyên. Các lý do phổ biến bao gồm:

Hiểu rõ nguyên nhân gốc rễ giúp khắc phục sự cố hiệu quả.

Tại sao máy chủ trả về 405 thay vì 404

Bạn có thể tự hỏi tại sao không chỉ trả về 404 Not Found?

Chà, 404 có nghĩa là tài nguyên không được tìm thấy chút nào, nhưng 405 có nghĩa là tài nguyên tồn tại, nhưng không với phương thức đó.

Sự khác biệt này rất quan trọng đối với các nhà phát triển vì nó cho bạn biết:

Cách hoạt động: Một ví dụ cụ thể

Hãy tưởng tượng một điểm cuối API chỉ đọc cung cấp thông tin sản phẩm.

Yêu cầu hợp lệ:

GET /api/products/123 HTTP/1.1Host: api.example.com

Phản hồi của máy chủ: 200 OK với dữ liệu sản phẩm.

Yêu cầu không hợp lệ:

Một máy khách vô tình cố gắng cập nhật sản phẩm bằng cách sử dụng PUT:

PUT /api/products/123 HTTP/1.1Host: api.example.comContent-Type: application/json
{"name": "New Product Name"}

Phản hồi 405 của máy chủ:

HTTP/1.1 405 Method Not AllowedAllow: GET, HEADContent-Type: application/json
{
  "error": "Method Not Allowed",
  "message": "The PUT method is not supported for this resource."
}

Tiêu đề Allow: GET, HEAD nói rõ ràng cho máy khách rằng đây là một điểm cuối chỉ đọc. Máy khách bây giờ biết chính xác điều gì đã sai và cách khắc phục.

Tại sao tiêu đề Allow lại quan trọng đến vậy

Tiêu đề Allow biến 405 từ một lỗi gây khó chịu thành một cuộc trò chuyện hữu ích. Nếu không có nó, máy khách sẽ phải đoán mò:

Đây là lý do tại sao đặc tả HTTP bắt buộc các máy chủ phải bao gồm tiêu đề Allow trong các phản hồi 405. Đó là điều làm cho mã thực sự hữu ích thay vì chỉ gây khó chịu.

Phản hồi 405 trông như thế nào?

Máy chủ phản hồi với trạng thái 405 cùng với tiêu đề Allow cho biết các phương thức HTTP được phép. RFC 7231 (đặc tả HTTP/1.1) chỉ dẫn rằng khi mã trạng thái 405 được gửi, máy chủ PHẢI bao gồm tiêu đề Allow liệt kê các phương thức HTTP được phép cho tài nguyên đó.

Ví dụ phản hồi:

textHTTP/1.1 405 Method Not Allowed Allow: GET, HEAD, OPTIONS Content-Type: text/html
<html> <body> <h1>405 Method Not Allowed</h1> <p>The requested method POST is not supported for this resource.</p> </body> </html>

Tiêu đề Allow là chìa khóa vì nó thông báo cho máy khách biết các phương thức nào được chấp nhận, cho phép sửa lỗi.

Bằng cách này, máy khách biết các phương thức nào được hỗ trợ và có thể điều chỉnh yêu cầu của họ cho phù hợp.

Các tình huống phổ biến gây ra lỗi 405

1. Điểm cuối chỉ đọc

Như trong ví dụ trên, một số tài nguyên được thiết kế chỉ đọc. Bạn có thể truy xuất chúng bằng GET, nhưng bạn không thể sửa đổi chúng bằng PUT, PATCH hoặc DELETE.

2. Phương thức không chính xác cho hành động

Đây có lẽ là nguyên nhân phổ biến nhất. Các nhà phát triển nhầm lẫn phương thức nào nên được sử dụng cho hành động nào.

3. Thiếu triển khai phương thức

Nhà thiết kế API có thể đơn giản là chưa triển khai một phương thức cụ thể cho một điểm cuối. Ví dụ, một điểm cuối có thể hỗ trợ GET và POST nhưng không hỗ trợ PUT hoặc DELETE.

4. Tường lửa ứng dụng web (WAF) và các quy tắc bảo mật

Đôi khi, cấu hình bảo mật cố ý chặn một số phương thức nhất định. Ví dụ, một WAF có thể chặn các phương thức PUT, PATCH và DELETE trên một số đường dẫn nhất định vì lý do bảo mật, trả về 405.

405 so với các lỗi 4xx khác: Biết sự khác biệt

Điều quan trọng là phải phân biệt 405 với các mã lỗi máy khách khác.

405 có nghĩa là "URL này tồn tại, nhưng không dành cho phương thức đó."

404 có nghĩa là "URL này không tồn tại cho bất kỳ phương thức nào."

405 có nghĩa là "Tôi biết bạn muốn làm gì, nhưng tôi sẽ không cho phép bạn làm điều đó cho tài nguyên cụ thể này." (Lỗi máy khách)

501 có nghĩa là "Tôi hoàn toàn không biết cách xử lý phương thức HTTP này, cho bất kỳ tài nguyên nào." (Lỗi máy chủ)

405 có nghĩa là "Thao tác này không khả dụng cho bất kỳ ai." (Giới hạn phương thức)

403 có nghĩa là "Thao tác này khả dụng, nhưng không dành cho bạn với quyền hiện tại của bạn." (Giới hạn ủy quyền)

Các tình huống phổ biến xuất hiện 405

Cách máy khách nên xử lý 405 Method Not Allowed

Khi máy khách nhận được phản hồi 405, họ nên:

Cách nhà phát triển có thể khắc phục lỗi 405

Ví dụ về các phương thức HTTP và cách sử dụng được phép

Phương thức HTTP Trường hợp sử dụng điển hình
GET Truy xuất tài nguyên hoặc dữ liệu
POST Tạo tài nguyên hoặc thực hiện hành động
PUT Cập nhật hoặc thay thế tài nguyên
DELETE Xóa tài nguyên
PATCH Cập nhật một phần tài nguyên
OPTIONS Hỏi về các phương thức được hỗ trợ

Sự không khớp giữa phương thức và khả năng của tài nguyên sẽ kích hoạt lỗi 405.

Kiểm tra phản hồi 405 với Apidog

Kiểm tra xem API của bạn có trả về 405 chính xác cho các phương thức không được hỗ trợ hay không là một dấu hiệu của sự phát triển API mạnh mẽ. Apidog giúp quá trình này trở nên cực kỳ đơn giản.

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

  1. Kiểm tra tất cả các phương thức dễ dàng: Lấy bất kỳ URL điểm cuối nào và nhanh chóng chuyển đổi giữa các phương thức GET, POST, PUT, PATCH, DELETE chỉ bằng một cú nhấp chuột để xem những phương thức nào được hỗ trợ.
  2. Xác thực tiêu đề Allow: Khi bạn nhận được phản hồi 405, Apidog sẽ hiển thị rõ ràng tiêu đề Allow trong chi tiết phản hồi. Bạn có thể xác minh rằng nó chứa danh sách các phương thức chính xác.
  3. Tự động kiểm tra phương thức: Tạo các bộ kiểm thử tự động xác minh rằng các phương thức không được hỗ trợ trả về 405 với tiêu đề Allow phù hợp, trong khi các phương thức được hỗ trợ trả về trạng thái 2xx mong đợi.
  4. Gỡ lỗi mã phía máy khách: Nếu bạn đang xây dựng một ứng dụng máy khách nhận được 405, bạn có thể sử dụng Apidog để tái tạo chính xác yêu cầu và phản hồi, giúp bạn hiểu và khắc phục sự cố trong mã máy khách của mình.
  5. Tài liệu hành vi API: Sử dụng Apidog để tài liệu các phương thức được hỗ trợ cho từng điểm cuối, làm cho thông tin này rõ ràng cho các nhà phát triển khác sử dụng API của bạn.

Tải xuống ứng dụng

Thay vì đoán mò, bạn sẽ có được sự rõ ràng trong vài giây. Tải xuống Apidog miễn phí và việc khắc phục sự cố HTTP sẽ trở nên dễ dàng.

Các phương pháp hay nhất để xử lý lỗi 405

Đối với nhà phát triển API (phía máy chủ):

Đối với người dùng API (phía máy khách):

Vai trò của phương thức OPTIONS

Phương thức OPTIONS là họ hàng chủ động của phản hồi 405. Thay vì thử một thao tác và bị từ chối, máy khách có thể hỏi máy chủ trước xem những phương thức nào được hỗ trợ:

Yêu cầu:

OPTIONS /api/products/123 HTTP/1.1Host: api.example.com

Phản hồi:

HTTP/1.1 200 OKAllow: GET, HEAD, OPTIONS

Đây là một cách thanh lịch hơn nhiều để khám phá khả năng của API mà không gây ra lỗi.

Khắc phục sự cố 405 phổ biến

Ý nghĩa bảo mật của 405

405 cũng có thể có ý nghĩa bảo mật:

Kết luận: Từ sự thất vọng đến sự rõ ràng

Mã trạng thái 405 Method Not Allowed không chỉ là một rào cản ngẫu nhiên. Nó là một tín hiệu có giá trị cho thấy tài nguyên tồn tại nhưng không chấp nhận phương thức bạn đã sử dụng. Mã trạng thái HTTP 405 Method Not Allowed là một ví dụ hoàn hảo về cách thiết kế API tốt cung cấp phản hồi rõ ràng, có thể hành động. Nó biến điều có thể là một ngõ cụt khó hiểu thành một biển báo hữu ích nói rằng, "Bạn không thể đi đường này, nhưng đây là những con đường đang mở cho bạn."

Đối với các nhà phát triển API, việc triển khai các phản hồi 405 phù hợp với các tiêu đề Allow chính xác là một dấu hiệu của sự chuyên nghiệp và chú ý đến chi tiết. Đối với người dùng API, việc hiểu cách đọc và phản hồi các lỗi 405 là chìa khóa để xây dựng các ứng dụng mạnh mẽ, tự sửa lỗi.

Vì vậy, lần tới khi bạn gặp lỗi 405, đừng thất vọng—hãy đọc tiêu đề Allow. Đó là máy chủ đang cố gắng giúp bạn thành công. Và khi bạn tự xây dựng hoặc kiểm tra API, một công cụ như Apidog sẽ cung cấp cho bạn khả năng đảm bảo việc sử dụng phương thức của bạn là chính xác và việc xử lý lỗi của bạn hữu ích như nó phải vậy.

Tải xuống ứng dụng

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