Lỗi 401 Unauthorized

Mã 401 Unauthorized có nghĩa gì, vì sao Google không lập chỉ mục trang bị chặn, cách phân biệt 401 với 403 và sửa lỗi xác thực ngoài ý muốn.

Xuất bản lần đầu: 28 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

401 Unauthorized cho biết yêu cầu thiếu thông tin xác thực hợp lệ hoặc thông tin đã gửi bị từ chối; phản hồi tuân thủ RFC 9110 phải có header WWW-Authenticate nêu cơ chế xác thực. Googlebot thông thường không đăng nhập, nên trang trả 401 không được lập chỉ mục và URL từng được lập chỉ mục sẽ bị loại theo thời gian. Đây là hành vi đúng với site staging, khu vực thành viên và nội dung thật sự riêng tư, nhưng là lỗi nghiêm trọng trên trang công khai. 401 khác 403 ở challenge xác thực bắt buộc, dù Google xử lý cả hai như lỗi phía client khi lập chỉ mục. Hai mã không làm chậm tốc độ crawl toàn site. Hãy kiểm thử không có cookie bằng curl hoặc URL Inspection, xác định tầng ứng dụng/CDN/WAF phát mã và chỉ allowlist crawler sau khi xác minh IP hoặc reverse DNS.

Tóm tắt — 401 Unauthorized là lỗi phía client theo RFC 9110 §15.5.2, thay thế RFC 7235, cho biết yêu cầu thiếu thông tin xác thực hợp lệ. Điều này bao gồm cả thông tin đã gửi nhưng bị từ chối, không chỉ trường hợp chưa gửi. Phản hồi 401 tuân thủ đặc tả còn phải có header WWW-Authenticate nêu cơ chế xác thực mong đợi. Mã này khác 403, một lời từ chối không bắt buộc có challenge và có thể hoàn toàn không liên quan đến thông tin xác thực. Dù vậy, Google xử lý mọi lỗi 4xx trừ 429 giống nhau khi lập chỉ mục: nội dung “không tồn tại”, nên không được lập chỉ mục và URL từng được lập chỉ mục sẽ bị loại dần. Googlebot thông thường không gửi thông tin xác thực, vì vậy theo chính Google, phản hồi 403 cho Googlebot thường là cấu hình máy chủ sai. 401/403 không tác động đến tốc độ crawl toàn site, dù một URL liên tục trả 4xx sẽ được crawl lại ít thường xuyên hơn theo thời gian. 401 là cách đúng và được Google ủng hộ để chặn nội dung thật sự riêng tư; nó chỉ là vấn đề khi xuất hiện trên trang bạn muốn lập chỉ mục. Nội dung có paywall có một đường triển khai được chấp nhận, không phải dùng 401 toàn diện.

Bản chất thật của 401

401 Unauthorized là phản hồi lỗi phía client. Định nghĩa kỹ thuật của MDN là rõ nhất:

“The HTTP 401 Unauthorized client error response status code indicates that a request was not successful because it lacks valid authentication credentials for the requested resource. This status code is sent with an HTTP WWW-Authenticate response header that contains information on the authentication scheme the server expects the client to include to make the request successfully.” (bản dịch) «Mã phản hồi lỗi phía client 401 Unauthorized cho biết yêu cầu không thành công vì thiếu thông tin xác thực hợp lệ cho tài nguyên được yêu cầu. Mã này được gửi cùng header phản hồi HTTP WWW-Authenticate, chứa thông tin về cơ chế xác thực mà máy chủ yêu cầu client cung cấp để yêu cầu thành công.»

Evidence for this claim A 401 response means the request lacks valid authentication credentials and the response must include a WWW-Authenticate challenge. Scope: RFC 9110 defines the status semantics and required challenge header; it does not prescribe a site's authentication product or login flow. Confidence: high · Verified: IETF: RFC 9110 §15.5.2 — 401 Unauthorized

Có hai điểm cần rút ra. Thứ nhất là “xác thực”: bên yêu cầu chưa chứng minh mình là ai. Thường là do thông tin xác thực thiếu, không hợp lệ hoặc hết hạn, nhưng 401 cũng có thể xuất hiện sau khi thông tin đã được gửi rồi bị từ chối; đừng kết luận “không có auth header” nếu chưa kiểm tra yêu cầu thật. Thứ hai, phản hồi 401 tuân thủ đặc tả phải mang header WWW-Authenticate. Theo RFC 9110 §15.5.2, thay thế RFC 7235 cũ, header này cho client biết cơ chế được mong đợi như HTTP Basic Auth, Bearer token hay luồng session cookie. Khi chẩn đoán 401, hãy kiểm tra trước tiên header có tồn tại không và nêu cơ chế nào. Evidence for this claim A 401 response means the request lacks valid authentication credentials and the response must include a WWW-Authenticate challenge. Scope: RFC 9110 defines the status semantics and required challenge header; it does not prescribe a site's authentication product or login flow. Confidence: high · Verified: IETF: RFC 9110 §15.5.2 — 401 Unauthorized

Trong hướng dẫn mã trạng thái của mình, tôi tóm tắt 401 là: “the client hasn’t identified or verified itself when needed.” (bản dịch) «client chưa tự nhận diện hoặc xác minh khi cần». Đó là toàn bộ ý nghĩa: chưa ai nói rõ mình là ai.

401 và 403 Forbidden — khác biệt quan trọng

Đây là chỗ nhiều người nhầm lẫn, nên hãy phân biệt bằng một dòng:

  • 401 = “Bạn là ai?” Thông tin xác thực thiếu hoặc không hợp lệ; hãy xác thực rồi thử lại.
  • 403 = “Tôi biết bạn là ai, nhưng vẫn từ chối.” Yêu cầu đã được hiểu nhưng quyền truy cập bị từ chối bất kể thông tin xác thực.

MDN diễn đạt cùng ý như sau:

“A 401 Unauthorized is similar to the 403 Forbidden response, except that a 403 is returned when a request contains valid credentials, but the client does not have permissions to perform a certain action.” (bản dịch) «401 Unauthorized giống phản hồi 403 Forbidden, ngoại trừ 403 được trả khi yêu cầu có thông tin xác thực hợp lệ nhưng client không có quyền thực hiện một hành động nhất định.»

Trong hướng dẫn của mình, tôi cũng đối chiếu 401 là “the client hasn’t identified or verified itself when needed” (bản dịch) «client chưa tự nhận diện hoặc xác minh khi cần», còn 403 là “the client is known but doesn’t have access rights” (bản dịch) «đã biết client là ai nhưng client không có quyền truy cập». Đó là xác thực so với phân quyền.

Cách nói ngắn trên đáng tin cậy, nhưng nếu cần chọn mã trong code hoặc quy tắc WAF thì phép thử giao thức chính xác hơn là: 401 bắt buộc có challenge WWW-Authenticate — RFC 9110 quy định MUST — còn 403 không bắt buộc, vì lời từ chối 403 có thể không liên quan đến thông tin xác thực, như chặn IP, quy tắc quyền hoặc chính sách giới hạn tốc độ. Chỉ hỏi “đã có thông tin xác thực chưa?” không đủ để phân biệt vì 401 có thể theo sau thông tin bị từ chối. Hãy hỏi: tôi đang phát challenge xác thực (401) hay từ chối thẳng (403)?

Đây là điểm SEO ít hiển nhiên và cũng là nhận định của Google về 403. Googlebot thông thường không bao giờ gửi thông tin xác thực. Vì vậy, theo chính Google, phản hồi 403 được phục vụ riêng cho Googlebot thường là máy chủ xử lý sai:

“HTTP 403 means that the user agent provided credentials, but was not granted access. However, Googlebot never provides credentials, so your server is returning this error incorrectly. The page will not be indexed.” (bản dịch) «HTTP 403 nghĩa là user agent đã cung cấp thông tin xác thực nhưng không được cấp quyền truy cập. Tuy nhiên, Googlebot không bao giờ cung cấp thông tin xác thực, nên máy chủ của bạn đang trả lỗi này không đúng. Trang sẽ không được lập chỉ mục.»

Đây là dấu hiệu chẩn đoán hữu ích. 401 với Googlebot có thể là chủ ý khi trang được bảo vệ theo thiết kế. 403 với Googlebot thường cho thấy cấu hình sai: Googlebot không gửi thông tin xác thực nên không có gì để kích hoạt phản hồi “đã xác thực nhưng bị từ chối”. Nếu thấy 403 trên trang Googlebot phải truy cập được, hãy nghi ngờ CDN, WAF hoặc cấu hình máy chủ trước. Điều này mô tả crawler phổ biến của Google; Google ghi riêng crawler trường hợp đặc biệt và công cụ fetch do người dùng kích hoạt, nên đừng suy rộng quy tắc đó cho mọi tích hợp sản phẩm Google mà không kiểm tra.

401 Unauthorized403 Forbidden
Ý nghĩaThông tin xác thực thiếu/không hợp lệ — “bạn là ai?”Đã hiểu nhưng từ chối truy cập — “tôi biết bạn, vẫn không”
Header bắt buộcWWW-Authenticate (RFC 9110)Không có header bắt buộc
Nguyên nhân thường gặpCổng đăng nhập, token hết hạn, Basic Auth, session timeoutQuy tắc quyền, chặn IP/địa lý, quy tắc WAF, hạn chế thư mục
Với GooglebotCó thể là chủ ý (trang được bảo vệ)Thường là cấu hình máy chủ sai (Googlebot không gửi thông tin xác thực)
Kết quả lập chỉ mụcKhông được lập chỉ mục; bị loại dầnKhông được lập chỉ mục; bị loại dần

Dòng cuối là kết luận: về lập chỉ mục, Google xử lý hai mã giống hệt nhau.

Google xử lý trang 401 như thế nào

Tài liệu mã trạng thái HTTP của Google nói rất thẳng về nhóm 4xx:

“Google doesn’t use the content from URLs that return 4xx status codes. If a URL was previously used but is now returning 4xx status code, Google systems will stop using the URL over time. In the case of Google Search, Google doesn’t index URLs that return a 4xx status code, and URLs that are already indexed and return a 4xx status code are removed from the index.” (bản dịch) «Google không dùng nội dung từ URL trả mã trạng thái 4xx. Nếu URL từng được sử dụng nhưng nay trả 4xx, hệ thống Google sẽ ngừng sử dụng URL đó theo thời gian. Với Google Search, Google không lập chỉ mục URL trả 4xx; URL đã được lập chỉ mục rồi trả 4xx sẽ bị xóa khỏi chỉ mục.» Evidence for this claim Google does not index 4xx URLs and removes already-indexed 4xx URLs over time. Scope: Google's crawler documentation supports the Search indexing outcome for 401 responses; it does not address access decisions for private users. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers

401 không phải ngoại lệ trong nhóm này. Trong bảng tài liệu, 401 (unauthorized)403 (forbidden) nằm ở hai dòng riêng nhưng dùng chung một lời giải thích:

“All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist.” (bản dịch) «Mọi lỗi 4xx, trừ 429, đều được xử lý giống nhau: crawler Google báo cho hệ thống xử lý tiếp theo rằng nội dung không tồn tại.»

Vì vậy, kết quả mang tính nhị phân chứ không phải hạ hạng. Trang trả 401 không “xếp hạng thấp hơn”; nó hoàn toàn không được lập chỉ mục hoặc bị loại nếu từng được lập chỉ mục. Điều này khớp với nhận định nền trong hướng dẫn của tôi rằng 4xx khiến trang bị loại khỏi chỉ mục. Bài này là phần đào sâu riêng về 401.

Một lưu ý về thời gian: việc xóa diễn ra “over time” (bản dịch) «dần theo thời gian», không phải ngay lần fetch lỗi đầu tiên. Tài liệu Google mô tả quá trình từ từ và hệ thống crawl trong lịch sử vẫn dung thứ lỗi ngắn hạn trước khi coi URL thật sự biến mất.

Quan niệm sai về tốc độ crawl — 401 KHÔNG làm chậm crawl

Điểm này khiến nhiều bài viết tốt cũng nhầm, nên cần nói chính xác. 401 hoặc 403 không làm chậm tốc độ crawl của Google. Google nói trực tiếp:

“Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (bản dịch) «Đừng dùng mã trạng thái 401403 để giới hạn tốc độ crawl. Mã 4xx, trừ 429, không tác động đến tốc độ crawl.»

Điều này quan trọng vì bạn sẽ thấy lời khuyên rằng đặt trang sau 401 sẽ “tiết kiệm crawl budget” hoặc “lãng phí crawl budget”; cả hai cách nói đều sai. Chỉ 429 và tín hiệu kiểu 5xx như 503 mới yêu cầu Googlebot giảm nhịp. 401 không phải cơ chế điều tiết; với lập chỉ mục, nó là tín hiệu “nội dung không tồn tại”. Nếu thật sự muốn tạm làm chậm crawl, hãy dùng 429/503, không phải 401/403.

Hai tuyên bố dễ bị nhập làm một nên cần giới hạn phạm vi. “Không ảnh hưởng tốc độ crawl” nói về tốc độ crawl toàn site. Riêng một URL liên tục trả 4xx sẽ được Google crawl lại ít thường xuyên hơn theo thời gian, tức tần suất thử lại của chính URL giảm dần. Đây là hai phạm vi khác nhau: crawl budget toàn site không bị bóp, nhưng URL cứ trả 401 sẽ được kiểm tra thưa hơn khi Google hạ ưu tiên.

Còn một trường hợp đặc biệt: 401 trên trang thông thường và 401 trên chính /robots.txt không được xử lý giống nhau. Nếu robots.txt trả 4xx không phải 429, gồm 401, Google coi như không có robots.txt và giả định file đó không đặt hạn chế crawl; Google không coi toàn site là không truy cập được. Đừng đặt /robots.txt sau cùng cổng xác thực với các trang riêng tư.

401 luôn là vấn đề? Không.

401 chỉ là lỗi khi xuất hiện ngoài ý muốn trên trang phải công khai. Khi trang thật sự riêng tư, 401 là cách đúng để giữ nó khỏi tìm kiếm và cũng là cách Google khuyên dùng. John Mueller nói rõ, qua bài dẫn lại của Search Engine Journal, rằng cách lý tưởng là xác thực phía máy chủ chặn người dùng thông thường xem nội dung — “that would include GoogleBot” (bản dịch) «điều đó cũng bao gồm GoogleBot». (Được Search Engine Journal dẫn lại từ một buổi trao đổi Google năm 2019; hãy coi đây là phát biểu đại diện được diễn giải chính xác, không phải trích dẫn nguyên văn đã xác minh theo fragment.)

Xác thực phía máy chủ, cơ chế tạo ra 401, là cách ông khuyên dùng để ẩn nội dung không công khai trước cả robots.txt, vì nó thật sự chặn truy cập thay vì chỉ đề nghị bot tránh xa.

Khung quyết định rất đơn giản:

  • Nên tiếp tục trả 401: môi trường staging, khu vực thành viên, công cụ nội bộ và mọi nội dung thật sự riêng tư. Hệ thống đang hoạt động đúng; đừng “sửa” nó.
  • Cần sửa: trang công khai, có thể lập chỉ mục nhưng vô tình trả 401 do CDN/WAF báo nhầm, Basic Auth còn sót, token hết hạn hoặc xung đột plugin/middleware.

Tác động SEO và cái bẫy “tôi vẫn mở được”

Các kiểu lỗi thực tế:

  • Trang bạn muốn lập chỉ mục vẫn vô hình cho đến khi gỡ cổng.
  • Trang từng xếp hạng biến mất nếu bắt đầu trả 401.
  • Bẫy “tôi vẫn mở được”: người kiểm tra đã xác thực, đăng nhập hoặc nằm trong IP allowlist, còn crawler thì không. Hướng dẫn của Google cho trường hợp 401 nói: “You can verify this error by visiting the page in incognito mode.” (bản dịch) «Bạn có thể xác minh lỗi bằng cách truy cập trang trong chế độ ẩn danh.» Tốt hơn nữa, hãy kiểm thử không xác thực bằng curl -I https://example.com/page hoặc dùng URL Inspection / Live Test của Search Console.

Khi thật sự cần cho crawler hợp lệ đi qua, hãy xác minh bằng IP / reverse DNS, tuyệt đối không chỉ tin chuỗi user-agent. Chuỗi user-agent rất dễ giả mạo, nên allowlist tên “Googlebot” là lỗ hổng bảo mật chứ không phải cách sửa.

Còn nội dung paywall hoặc chỉ dành cho người đăng ký?

401 toàn diện cho mọi người, kể cả Googlebot, không phải lựa chọn duy nhất nếu bạn muốn nội dung bị giới hạn vẫn xếp hạng. Google hỗ trợ lập chỉ mục nội dung paywall bằng dữ liệu có cấu trúc isAccessibleForFree, kết hợp cấp quyền cho các danh tính crawler chuyên biệt của Google dùng cho nội dung người đăng ký/người dùng đã đăng ký. Mục đích của markup là:

“This structured data helps Google differentiate paywalled content from the practice of cloaking, which violates spam policies.” (bản dịch) «Dữ liệu có cấu trúc này giúp Google phân biệt nội dung paywall với hành vi cloaking vi phạm chính sách spam.»

Cảnh báo nằm ngay trong đó: âm thầm cung cấp toàn bộ nội dung chỉ cho Googlebot mà không khai báo bằng dữ liệu có cấu trúc là cloaking, có nguy cơ vi phạm chính sách spam. Nếu muốn nội dung bị giới hạn được lập chỉ mục, hãy dùng cách được chấp nhận gồm markup và quyền crawler, không dùng lối bỏ qua kín đáo.

Cách sửa 401 ngoài ý muốn

  1. Xác nhận đây thật sự là lỗi. Trang có phải công khai không? Nếu là staging hoặc chỉ dành cho thành viên thì không cần sửa.
  2. Gỡ yêu cầu xác thực trên trang công khai: xóa Basic Auth còn sót trong .htaccess/nginx, sửa token hết hạn và xử lý xung đột plugin/middleware.
  3. Kiểm tra CDN/WAF và đừng giả định đã biết tầng nào phát 401. Phản hồi cùng header WWW-Authenticate cho biết có challenge nhưng không cho biết nguồn là ứng dụng, identity/auth proxy, quy tắc bot của CDN/WAF hay origin. False positive từ quy tắc quản lý bot ở edge là nguyên nhân phổ biến; hãy xem log từng tầng và xác minh Googlebot bằng reverse DNS trước khi allowlist.
  4. Cho crawler đã xác minh đi qua bằng IP/reverse DNS, không dùng user-agent.
  5. Đừng dùng 401 để deindex trang có thể công khai; hãy dùng noindex và vẫn cho crawl. Cổng đăng nhập chỉ dành cho nội dung thật sự riêng tư.
  6. Xác nhận cách sửa bằng Live Test của URL Inspection, nhưng chỉ coi kết quả pass là bằng chứng cho lần fetch hiện tại. Google không cam kết thời hạn crawl lại, lập chỉ mục lại hay phục hồi xếp hạng cố định sau khi sửa 401. Hãy chờ và kiểm tra lại báo cáo Page Indexing thay vì mong đảo ngược ngay.

Để xem toàn bộ quy trình chẩn đoán–sửa–xác nhận trong Google Search Console cho trạng thái Page Indexing “Blocked due to unauthorized request (401)” (bản dịch) «Bị chặn do yêu cầu chưa được xác thực (401)», hãy đọc bài đồng hành chuyên biệt; bài này chỉ tập trung vào giao thức và khái niệm.

Bing

Bing về chức năng xử lý giống nhau: URL trả 401 hoặc 403 cho Bingbot không thể truy cập và sẽ không được lập chỉ mục. Bingbot cũng cần quyền truy cập không xác thực như Googlebot; khi tạo allowlist, hãy xác minh bằng dải IP đã công bố thay vì user-agent.

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.