204 Không có nội dung

HTTP 204 có nghĩa là gì, vì sao Google xử lý phản hồi 204 tương tự lỗi mềm, khi nào nên dùng 204 cho API hoặc beacon, và trang web nên trả về mã nào thay thế.

Xuất bản lần đầu: 27 thg 6, 2026 · Cập nhật lần cuối: 22 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

HTTP 204 No Content là mã thành công 2xx cố ý trả về thân rỗng. Đây không phải lỗi, không nói URL có tồn tại hay không và không bị đặc tả giới hạn vào một nhóm phương thức cố định. Mã này phù hợp với thao tác DELETE/PUT của REST API và beacon phân tích, nhưng không phù hợp với trang cần xếp hạng. Tài liệu của Google nói phản hồi 204 không cung cấp nội dung để xử lý; trang cần nội dung nên trả 200 với thân thực, trang đã mất dùng 404/410 và trang đã chuyển dùng 301.

Tóm tắt — 204 là mã thành công 2xx tuân thủ RFC 9110 §15.3.5 và có thân rỗng theo thiết kế. Thân phản hồi phải rỗng, không được có Content-Length kể cả 0, và trình duyệt có thể từ chối phản hồi mang nội dung. Đây không phải lỗi, không nói tài nguyên có tồn tại hay không và RFC không giới hạn mã này vào danh sách phương thức cố định. Tình huống hợp lệ gần như đều không phải document: DELETE/PUT trong REST API và beacon phân tích (sendBeacon(), Measurement Protocol của GA4), dù giới thực hành bất đồng về tần suất API nên dùng nó. Hệ quả SEO rất hẹp: bảng mã trạng thái của Google nói “Google wasn’t able to receive any content and therefore can’t process it” (bản dịch) «Google không thể nhận nội dung nên không thể xử lý». Trang cần xếp hạng sẽ không được lập chỉ mục từ phản hồi này; trong thực tế chúng thường bị gắn soft 404 trong Search Console, nhưng Google không bảo đảm nhãn cụ thể hay thời gian loại bỏ. Sửa mã 204 cấp trang ngoài ý muốn bằng cách khôi phục 200 có thân thực hoặc dùng 404/410/301 tùy mục đích.

Ý nghĩa của 204 trong đặc tả

RFC 9110 (HTTP Semantics) nêu rõ rằng 204 cho biết “the server has successfully fulfilled the request and that there is no additional content to send in the response payload body.” (bản dịch) «máy chủ đã hoàn thành yêu cầu thành công và không có nội dung bổ sung để gửi trong thân payload phản hồi». Đây là mã thành công, cùng nhóm 2xx với 200 OK, nhưng cố ý không có thân phản hồi. Evidence for this claim RFC 9110 defines 204 No Content as a successful response with no additional content to send and says it is terminated by the header section because it cannot contain content. Scope: HTTP semantics for 204 responses. Confidence: high · Verified: IETF: RFC 9110 §15.3.5 — 204 No Content

Có ba chi tiết vận hành quan trọng. Thứ nhất, thân phản hồi thực sự phải rỗng: MDN nói phản hồi này “must not include any content or the Content-Length header (browsers may reject responses that include content).” (bản dịch) «không được chứa nội dung hoặc header Content-Length; trình duyệt có thể từ chối phản hồi chứa nội dung». Đây là quy định thật, không phải thông lệ lỏng lẻo — RFC 9110 §8.6 cấm hoàn toàn Content-Length trên 204, nên “chỉ gửi Content-Length: 0” cũng không tuân thủ; phản hồi kết thúc sau phần header. Thứ hai, các header như ETag hay Last-Modified mô tả biểu diễn được chọn sau khi hành động hoàn tất, không phải thân đã gửi. Thứ ba, ETag xuất hiện trên một số phản hồi 204 (ví dụ MDN dùng PUT cập nhật tại chỗ), nhưng RFC không bắt buộc mọi phản hồi loại này phải có. Theo mặc định, 204 có thể lưu đệm theo suy đoán trừ khi phương thức hoặc header cache-control nói khác.

Điểm cốt yếu là 204 không liên quan đến việc URL có tồn tại hay không. Endpoint API hoạt động bình thường có thể trả 204 vĩnh viễn. Điều đó khác với 404 (không tìm thấy) hoặc 410 (đã mất): hai mã kia nói về sự vắng mặt, còn 204 nói về yêu cầu thành công nhưng cố ý không mang payload.

Cách Google xử lý phản hồi 204

Toàn bộ câu chuyện SEO hẹp hơn những câu khái quát trên blog nhà cung cấp. Google lập chỉ mục nội dung; phản hồi 204 không có nội dung. Tài liệu mã trạng thái của Google nêu riêng một giới hạn cụ thể: quy tắc chung cho 2xx là “Google considers the content for processing,” (bản dịch) «Google xem xét nội dung để xử lý»; còn hàng dành cho 204 nói “Google wasn’t able to receive any content and therefore can’t process it.” (bản dịch) «Google không thể nhận nội dung nên không thể xử lý». Evidence for this claim Google says it treats a 204 response as though the URL returned a soft 404. Scope: Google Search indexing behavior for URLs returning HTTP 204. Confidence: high · Verified: Google: HTTP status codes and Search

Đó là ranh giới thật và cần nói chính xác điều nó bảo đảm hoặc không bảo đảm. Hướng dẫn chung về 2xx trên cùng trang nói nội dung trống hoặc giống lỗi có thể bị báo soft 404; nhưng riêng hàng 204 không bảo đảm mọi phản hồi đều nhận nhãn Search Console đó, và Google không công bố thời hạn loại bỏ. Điều chắc chắn là mã 204 trên URL nội dung không cung cấp gì cho quy trình lập chỉ mục, nên có thể suy luận hợp lý rằng URL không được lập chỉ mục từ phản hồi này. Không nên mở rộng thành tuyên bố “chắc chắn mất thứ hạng toàn site” hay “tự động thu hồi crawl budget”, vì Google không hứa như vậy. Trong thực tế, Search Console thường hiển thị các URL này dưới dạng soft 404; hãy coi nhãn và thời điểm cụ thể là hành vi quan sát được, không phải bảo đảm trong tài liệu.

Đây cũng là quan điểm tôi duy trì trong bài Mã trạng thái HTTP và tác động SEO trên blog Ahrefs. Trong phần Google xử lý phản hồi 2xx, tôi viết: “Most 2xxs will allow pages to be indexed. However, 204s will be treated as soft 404s and won’t be indexed.” (bản dịch) «Hầu hết phản hồi thành công cho phép trang được lập chỉ mục; phản hồi không có nội dung sẽ bị xử lý như lỗi mềm và không được lập chỉ mục». Tôi vẫn xem đây là cách hiểu thực tế; để xác định ranh giới chính thức chính xác, nên dùng cách diễn đạt hiện tại của Google rằng hệ thống không thể nhận hoặc xử lý nội dung.

Tài liệu nói soft 404 tiếp tục được crawl và gây lãng phí crawl budget, nhưng đó là hướng dẫn chung, không phải lời hứa riêng cho 204. Dùng 204 không tự động giải phóng hay chuyển tài nguyên crawl; Google lưu ý phân bổ tài nguyên còn phụ thuộc giới hạn phục vụ, chất lượng site và lượng nội dung, không chỉ mã trạng thái gây loại trừ. Kết luận an toàn là sửa phản hồi 204 ngoài ý muốn vì nó ngăn trang được lập chỉ mục, không phải vì bạn được bảo đảm nhận một khoản lợi crawl budget cụ thể. Evidence for this claim Using 204 does not automatically free crawl budget or redirect crawl resources; the official Google 204 guidance establishes only that no content can be processed. Scope: web crawling and indexing Confidence: high · Verified: How HTTP status codes affect Google's crawlers

So sánh 204 với các mã thường bị nhầm

Thân phản hồiÝ nghĩaCách dùng đúng
200 (nội dung thực)Có dữ liệuThành công, đây là trangTrang muốn được lập chỉ mục
200 (trống / nội dung “không tìm thấy”)Trống hoặc văn bản lỗiTuyên bố thành công nhưng không có nội dung thực — soft 404Không dùng; đây là lỗi cần sửa
204Rỗng theo thiết kếThành công, cố ý không có thânAPI, beacon — không dùng cho URL trang
404Bất kỳKhông tìm thấyTrang đã mất và không có nội dung thay thế
410Bất kỳĐã mất (vĩnh viễn)Trang bị xóa có chủ đích và vĩnh viễn
301Đã chuyển vĩnh viễnTrang chuyển sang URL mới

Cạm bẫy là 204, phản hồi 200 rỗng, 404 và 410 đều có thể xuất hiện dưới nhãn “soft 404” trong GSC khi không có nội dung hữu ích, nhưng chúng thể hiện mục đích rất khác nhau với client tuân thủ đặc tả. 410 là tín hiệu có chủ đích rằng tài nguyên từng tồn tại và đã biến mất vĩnh viễn; 204 không được thiết kế cho ý nghĩa đó và không nên nằm trên URL trang.

Khi nào 204 hoàn toàn đúng, không phải lỗi

Hầu hết trường hợp 204 hợp lệ đều là phản hồi không phải document:

  • REST API DELETE / PUT. Khi client xóa tài nguyên hoặc cập nhật tại chỗ và không có gì hữu ích cần trả về, 204 là cách trả lời điển hình — cũng là mẫu RFC 9110 khuyến nghị.
  • Beacon phân tích và theo dõi. Đặc tả W3C Beacon quanh navigator.sendBeacon() kỳ vọng endpoint beacon trả 204. Endpoint Measurement Protocol của Google Analytics 4 trả 204 cho hit được chấp nhận. Cần lưu ý GA4 cũng trả 204 cho payload sai hoặc không hợp lệ; mã này chỉ xác nhận endpoint có thể truy cập và đã phản hồi đúng cấu trúc, không chứng minh hit được xử lý.
  • Trải nghiệm “lưu mà không chuyển trang”. Yêu cầu PUT lưu trạng thái tại chỗ và giữ người dùng trên trang hiện tại; cách diễn đạt của MDN là với 204, “the client doesn’t need to navigate away from its current page.” (bản dịch) «client không cần rời trang hiện tại».

Điểm chung là không URL nào trong các trường hợp trên cần được lập chỉ mục, nên 204 là kết quả đúng và được kỳ vọng. Vấn đề chỉ xuất hiện khi 204 nằm trên URL document đáng lẽ phải xếp hạng.

Một sắc thái liên quan: RFC 9110 không giới hạn 204 vào DELETE/PUT/beacon; đó chỉ là các mẫu phổ biến. Định nghĩa của đặc tả trung lập với phương thức; điều quan trọng là hợp đồng của phương thức và việc trả một biểu diễn có hữu ích hay không. Yêu cầu GET trả 204 vẫn hợp lệ ở tầng giao thức. Với trang cần lập chỉ mục, câu hỏi thật không phải “204 trên GET có được phép không” mà là “URL này có cần đưa một biểu diễn cho Google để được tìm thấy không”; câu trả lời luôn là có. Quy tắc SEO phụ thuộc URL có phải document hay không, không phụ thuộc phương thức HTTP.

Ngay cả giới thiết kế API cũng không nhất trí rằng “204 luôn đúng cho phản hồi API”. Bài của Postman xem 204 là lựa chọn mặc định khi hành động không có gì để trả; Brandur Leach lập luận ngược lại rằng phản hồi thành công rỗng có thể gây bất tiện cho client đang chờ biểu diễn mới như trạng thái cập nhật, ID được tạo hoặc trường được tính. Đây là đánh đổi về trải nghiệm lập trình, không phải tính đúng của HTTP — 204 vẫn tuân thủ đặc tả theo cả hai cách — và tách biệt với câu hỏi SEO. Một lỗi hay gặp trong bài viết API là gửi Content-Length: 0 trên 204 “cho an toàn”. Đừng làm vậy: RFC 9110 §8.6 cấm hoàn toàn Content-Length trong phản hồi 204, kể cả khi giá trị bằng 0.

Chẩn đoán và sửa mã 204 cấp trang ngoài ý muốn

Nếu crawler như Screaming Frog hoặc Ahrefs Site Audit, hay nhật ký của bạn, cho thấy mã 204 trên trang đáng lẽ có nội dung:

  1. Xác minh điều Googlebot thực sự nhận. Dùng URL Inspection trong Search Console để xem trạng thái và nội dung được kết xuất mà Google nhận, không chỉ phản hồi trình duyệt. CDN, edge worker, WAF hoặc tuyến ứng dụng có thể trả 204 cho bot hay trong điều kiện cụ thể dù phía bạn trông bình thường — tương tự mẫu “trình duyệt của tôi vẫn ổn” khi xuất hiện 403 ngoài ý muốn.
  2. Sau đó sửa theo mục đích:
    • Trang phải tồn tại và có nội dung → tìm logic máy chủ/CDN/ứng dụng phát ra 204 và khôi phục 200 cùng thân phản hồi thật.
    • Trang đã mất và không có nội dung thay thế → trả về 404 hoặc 410.
    • Trang đã chuyển → dùng 301 đến URL mới.
  3. Giám sát. Theo dõi mục soft 404 trong báo cáo Lập chỉ mục trang của GSC, xem mã crawl trong nhật ký và cấu hình crawler cảnh báo 204 để một lỗi template không âm thầm loại cả khu vực khỏi chỉ mục.

Mô hình cần nhớ là 204 không “xấu”. Đây là công cụ chính xác, phù hợp với endpoint API và beacon nhưng sai với document. Lỗi chỉ xuất hiện khi dùng không đúng chỗ. Các mã liên quan như 403, 404, 410 và soft 404 đều có vị trí riêng; vị trí của 204 nằm ngoài trang nội dung.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.