Bạn đang truy cập một trang web hoặc gọi API rồi bất ngờ nhận được thông báo 401 Unauthorized? Lỗi này báo hiệu rằng server không chấp nhận thông tin xác thực bạn gửi lên, hoặc bạn chưa cung cấp thông tin đăng nhập.
Bài viết này mình sẽ giải thích lỗi 401 là gì, liệt kê các nguyên nhân phổ biến nhất, và hướng dẫn bạn 4 cách khắc phục từ đơn giản tới nâng cao. Dù bạn là người dùng thông thường hay quản trị viên website, đều sẽ tìm được hướng xử lý phù hợp.

Lỗi 401 Unauthorized là gì?
Lỗi 401 là một mã trạng thái HTTP thuộc nhóm 4xx (lỗi phía client). Khi server trả về mã 401, nó muốn nói rằng: “Tôi cần bạn xác thực trước khi cho truy cập tài nguyên này, nhưng thông tin bạn gửi lên không hợp lệ hoặc chưa được cung cấp.”
Cần phân biệt rõ: 401 liên quan tới xác thực (authentication), tức server chưa biết bạn là ai. Còn lỗi 500 Internal Server Error lại là lỗi phía server, hoàn toàn khác bản chất.
Dù tên gọi chính thức là “Unauthorized” (không được phép), ý nghĩa thực tế lại gần với “Unauthenticated” (chưa xác thực) hơn. Nôm na là server đang hỏi: “Bạn là ai? Hãy chứng minh đi.”
Khi trình duyệt nhận được response 401, server cũng gửi kèm một header WWW-Authenticate chỉ ra phương thức xác thực mà nó chấp nhận. Ví dụ: Basic Auth (username/password), Bearer Token (dùng cho API), hoặc Digest Auth. Trình duyệt sẽ dựa vào header này để hiển thị popup yêu cầu nhập thông tin đăng nhập, hoặc ứng dụng sẽ biết cần gửi lại request với credentials đúng.
Bạn có thể gặp lỗi 401 dưới nhiều dạng hiển thị khác nhau tùy server và trình duyệt:
401 UnauthorizedHTTP Error 401Authorization RequiredAccess Denied
Dù hiển thị khác nhau, tất cả đều mang cùng ý nghĩa: server cần bạn xác thực trước.
Phân biệt lỗi 401 và lỗi 403
Nhiều người hay nhầm lẫn 401 với 403 Forbidden. Sự khác biệt nằm ở chỗ:
- 401 Unauthorized: Server chưa biết bạn là ai. Bạn cần đăng nhập hoặc cung cấp thông tin xác thực hợp lệ. Sau khi xác thực đúng, bạn sẽ truy cập được.
- 403 Forbidden: Server biết bạn là ai rồi, nhưng bạn không có quyền truy cập tài nguyên đó. Đăng nhập lại cũng không giải quyết được, bạn cần liên hệ admin để được cấp quyền.
Hiểu đơn giản: 401 là “chưa đăng nhập”, 403 là “đăng nhập rồi nhưng không đủ quyền”. Cách xử lý hoàn toàn khác nhau, nên xác định đúng lỗi trước khi bắt tay vào fix.
5 nguyên nhân phổ biến gây lỗi 401
1. Sai thông tin đăng nhập

Nguyên nhân đơn giản nhất: bạn nhập sai username hoặc password. Có thể do gõ nhầm, bật Caps Lock, hoặc dùng mật khẩu cũ đã đổi trước đó. Trường hợp này hay gặp khi truy cập trang quản trị WordPress (/wp-admin), cPanel, hoặc các hệ thống yêu cầu đăng nhập.
Ngoài ra, nếu bạn dùng trình quản lý mật khẩu (password manager), có khả năng nó đang tự động điền mật khẩu cũ đã lưu từ trước. Kiểm tra lại thông tin được auto-fill trước khi nhấn Login.
2. Phiên đăng nhập hết hạn (session expired)

Phần lớn website đặt thời hạn cho mỗi phiên đăng nhập. Nếu bạn để tab trình duyệt quá lâu không thao tác, session sẽ hết hạn. Lúc này mọi request tiếp theo đều bị server từ chối với mã 401.
Ví dụ, WordPress mặc định giữ session khoảng 48 giờ (hoặc 14 ngày nếu bạn tick “Remember Me”). Với các ứng dụng ngân hàng hay tài chính, session timeout thường chỉ 5-15 phút vì lý do bảo mật. Đăng nhập lại là cách xử lý nhanh nhất.
3. Bảo vệ thư mục bằng .htpasswd

Trên máy chủ Apache, quản trị viên có thể dùng file .htaccess kết hợp .htpasswd để yêu cầu xác thực khi truy cập một thư mục cụ thể. Nếu bạn truy cập URL thuộc thư mục đó mà không nhập đúng thông tin, server sẽ trả về 401.
# Ví dụ cấu hình .htaccess bảo vệ thư mục
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/user/.htpasswd
Require valid-user
Cấu hình trên yêu cầu tất cả người truy cập phải nhập username/password. Nếu file .htpasswd bị lỗi, đường dẫn AuthUserFile sai vị trí, hoặc password hash trong file không đúng định dạng, server cũng sẽ báo 401 cho mọi người, kể cả khi họ nhập đúng thông tin.
Trên Nginx, cơ chế tương tự sử dụng directive auth_basic và auth_basic_user_file. Nguyên lý giống nhau, chỉ khác cú pháp cấu hình.
4. Token API không hợp lệ hoặc hết hạn

Với các ứng dụng dùng REST API, lỗi 401 thường xuất hiện khi access token đã hết hạn, bị thu hồi, hoặc gửi sai định dạng trong header Authorization. Trường hợp này phổ biến khi làm việc với WordPress REST API, các dịch vụ bên thứ ba, hoặc app mobile gọi API backend.
# Ví dụ request API thiếu hoặc sai token
curl -H "Authorization: Bearer token_het_han_roi" https://api.example.com/data
# Server trả về:
# HTTP/1.1 401 Unauthorized
# {"error": "invalid_token", "message": "Token has expired"}
Một số lỗi hay gặp với API token:
- Gửi token ở sai header (ví dụ dùng
X-Auth-Tokenthay vìAuthorization: Bearer). - Token bị copy thiếu ký tự, thường do dính thêm dấu xuống dòng hoặc khoảng trắng.
- Dùng token của môi trường staging cho production, hoặc ngược lại.
- Token đã bị admin thu hồi (revoke) nhưng ứng dụng vẫn cache token cũ.
5. Plugin bảo mật chặn nhầm
Trên WordPress, các plugin bảo mật như Wordfence, iThemes Security, hoặc Sucuri đôi khi “quá mẫn cảm”, nhận diện nhầm hành động đăng nhập hợp lệ là tấn công brute force rồi chặn luôn. Kết quả là bạn bị trả về 401 dù nhập đúng thông tin.
Ngoài ra, nếu bạn đăng nhập sai quá nhiều lần liên tiếp, một số plugin sẽ tạm khóa tài khoản hoặc IP của bạn trong một khoảng thời gian nhất định (thường 15-60 phút). Trong thời gian bị khóa, mọi lần đăng nhập đều bị từ chối, kể cả khi nhập đúng password.
Các tường lửa ứng dụng web (WAF) như ModSecurity hoặc Cloudflare WAF cũng có thể chặn request nếu pattern request trông giống tấn công. Ví dụ, gửi quá nhiều request trong thời gian ngắn từ cùng một IP.
4 cách khắc phục lỗi 401 Unauthorized
Cách 1: Kiểm tra lại thông tin đăng nhập
Bước đầu tiên luôn là kiểm tra lại username và password. Nghe đơn giản nhưng đây là nguyên nhân phổ biến nhất:
- Tắt Caps Lock, kiểm tra bàn phím có đang ở đúng ngôn ngữ nhập liệu không.
- Nếu không nhớ mật khẩu, dùng chức năng “Quên mật khẩu” để đặt lại.
- Với API: kiểm tra lại API key hoặc token, đảm bảo chưa hết hạn và có đúng quyền (scope/permission).
- Kiểm tra tài khoản có bị khóa do đăng nhập sai quá nhiều lần không.
- Thử đăng nhập bằng một tài khoản khác để xác nhận lỗi nằm ở tài khoản cụ thể hay toàn bộ hệ thống.
Cách 2: Xóa cache và cookie trình duyệt

Trình duyệt lưu trữ cookie và cache từ các lần truy cập trước. Nếu thông tin xác thực cũ đã lỗi thời, trình duyệt vẫn tự động gửi nó đi, khiến server từ chối. Đây là “thủ phạm” âm thầm mà nhiều người không nghĩ tới.
Cách xóa trên Chrome:
- Nhấn
Ctrl + Shift + Delete(Windows) hoặcCmd + Shift + Delete(Mac). - Chọn khoảng thời gian: All time.
- Tick chọn Cookies and other site data và Cached images and files.
- Nhấn Delete data.
Sau khi xóa, truy cập lại trang và đăng nhập lại từ đầu. Bạn cũng có thể thử mở trang ở chế độ ẩn danh (Incognito) để kiểm tra nhanh xem có phải do cache hay không. Nếu mở Incognito mà đăng nhập được bình thường, thì chắc chắn do cookie/cache cũ.
Trên Firefox: vào Settings > Privacy & Security > Cookies and Site Data > Clear Data. Trên Safari: vào Preferences > Privacy > Manage Website Data > Remove All.
Cách 3: Flush DNS cache
Trong một số trường hợp hiếm hơn, DNS cache trên máy tính bị lỗi thời có thể gửi request tới sai địa chỉ server, dẫn tới 401. Điều này xảy ra khi website vừa chuyển server hoặc thay đổi DNS records mà máy tính của bạn vẫn cache thông tin cũ.
Xả DNS cache bằng lệnh:
# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Linux (systemd)
sudo systemd-resolve --flush-caches
# Linux (nscd)
sudo systemctl restart nscd
Sau khi flush xong, đợi vài giây rồi thử truy cập lại trang web. Nếu vẫn gặp lỗi, nguyên nhân nằm ở chỗ khác.
Cách 4: Kiểm tra cấu hình server (dành cho quản trị viên)
Nếu bạn là người quản trị website và người dùng báo gặp 401, cần kiểm tra một số điểm:
Kiểm tra file .htaccess:
- Mở file
.htaccessở thư mục gốc website. - Tìm các dòng
AuthType,AuthName,Require valid-user. Nếu chúng đang áp dụng cho thư mục không cần bảo vệ, hãy comment lại bằng dấu#. - Kiểm tra đường dẫn
AuthUserFilecó đúng vị trí file.htpasswdkhông. Đường dẫn tuyệt đối là bắt buộc. - Nếu không chắc, hãy tạm rename file
.htaccessthành.htaccess.bakrồi kiểm tra lại website.
Kiểm tra plugin bảo mật (WordPress):
- Tạm tắt tất cả plugin, đặc biệt plugin bảo mật. Có thể tắt qua FTP/File Manager bằng cách rename folder
wp-content/pluginsthànhplugins.bak. - Nếu lỗi biến mất, bật lại từng plugin một để xác định cái nào gây xung đột.
- Kiểm tra log của plugin xem có IP nào bị block không, gỡ block nếu là IP hợp lệ.
Kiểm tra cấu hình API:
- Đảm bảo header
Authorizationđược gửi đúng format (Bearer token, Basic auth, v.v.). - Kiểm tra token có đúng scope/permission không.
- Xem lại cấu hình CORS nếu gọi API cross-origin, đảm bảo header
Authorizationnằm trong danh sách allowed headers. - Kiểm tra access log của server để xem request có thực sự tới server chưa, hay đã bị chặn ở tầng proxy/CDN.
Nếu website đang chạy trên hosting và bạn gặp khó khăn trong việc xử lý các lỗi server, có thể cân nhắc chuyển sang Pro Hosting của AZDIGI với đội ngũ hỗ trợ kỹ thuật 24/7, giúp xử lý nhanh các vấn đề liên quan tới cấu hình server.
Lỗi 401 ảnh hưởng tới SEO như thế nào?
Nếu các trang quan trọng trên website trả về lỗi 401, Googlebot sẽ không thể crawl và lập chỉ mục nội dung đó. Hệ quả trực tiếp:
- Trang bị lỗi 401 sẽ biến mất khỏi kết quả tìm kiếm.
- Googlebot gặp nhiều lỗi 401 liên tục có thể giảm tần suất crawl toàn bộ site (lãng phí crawl budget).
- Nội dung mới chậm được index hơn bình thường.
- Internal links trỏ tới trang 401 sẽ trở thành “dead ends”, ảnh hưởng tới cấu trúc liên kết nội bộ.
Bạn nên kiểm tra báo cáo Coverage (Phạm vi lập chỉ mục) trong Google Search Console định kỳ để phát hiện sớm các URL trả về 401. Nếu trang đó là trang công khai và không nên yêu cầu xác thực, hãy sửa ngay. Nếu trang cần bảo mật (ví dụ trang admin), thì 401 là hoàn toàn bình thường và không cần lo.
Cách phòng tránh lỗi 401 trong tương lai
- Dùng trình quản lý mật khẩu (Bitwarden, 1Password, KeePass) để lưu thông tin đăng nhập chính xác, tránh nhập sai hay quên password.
- Thiết lập token refresh tự động cho các ứng dụng dùng API. Hầu hết framework hiện đại đều hỗ trợ cơ chế refresh token, giúp access token được làm mới trước khi hết hạn.
- Cấu hình session timeout hợp lý: không quá ngắn gây phiền người dùng, không quá dài gây rủi ro bảo mật. Với website thông thường, 24-48 giờ là hợp lý. Với ứng dụng tài chính, 15-30 phút.
- Review lại cấu hình .htaccess mỗi khi thay đổi cài đặt server, cài plugin mới, hoặc di chuyển hosting. Nhiều plugin WordPress tự động thêm rules vào .htaccess khi kích hoạt.
- Giám sát log server định kỳ để phát hiện sớm các đợt tăng đột biến lỗi 401. Có thể dùng các công cụ như GoAccess, AWStats, hoặc tính năng log trong control panel hosting.
- Bật xác thực hai yếu tố (2FA) cho các tài khoản quan trọng. 2FA không chỉ tăng bảo mật mà còn giúp giảm rủi ro bị khóa tài khoản do brute force.
Câu hỏi thường gặp về lỗi 401
Lỗi 401 có phải lỗi server không?
Không. Lỗi 401 thuộc nhóm 4xx, nghĩa là lỗi từ phía client. Server hoạt động bình thường, chỉ là nó từ chối vì bạn chưa xác thực hoặc xác thực sai. Lỗi phía server thuộc nhóm 5xx, ví dụ lỗi 500 Internal Server Error.
Lỗi 401 và 403 khác nhau chỗ nào?
Lỗi 401 nghĩa là bạn chưa xác thực (server không biết bạn là ai). Lỗi 403 nghĩa là bạn đã xác thực nhưng không đủ quyền truy cập tài nguyên đó. Cách fix cũng khác: 401 thì đăng nhập lại, 403 thì cần liên hệ admin để cấp quyền.
Plugin bảo mật WordPress có gây lỗi 401 không?
Có. Một số plugin bảo mật như Wordfence, iThemes Security có thể chặn nhầm request đăng nhập hợp lệ nếu phát hiện hành vi “đáng ngờ” (ví dụ đăng nhập từ IP lạ, nhiều lần liên tiếp). Tạm tắt plugin rồi thử lại để xác nhận.
Làm sao sửa lỗi 401 khi gọi REST API?
Kiểm tra 3 thứ: (1) Token hoặc API key có đúng và chưa hết hạn không, (2) Header Authorization có gửi đúng format không (ví dụ Bearer <token>), (3) Token có đủ scope/permission cho endpoint bạn đang gọi không. Nếu dùng OAuth, hãy refresh token và thử lại.
Kết luận

Lỗi 401 Unauthorized nghe có vẻ nghiêm trọng nhưng phần lớn trường hợp đều dễ xử lý. Bắt đầu từ việc kiểm tra lại thông tin đăng nhập, xóa cache trình duyệt, rồi mới đi sâu vào cấu hình server nếu cần.
Nếu bạn là quản trị viên website, hãy chú ý kiểm tra file .htaccess, plugin bảo mật, và log server định kỳ. Với developer làm việc với API, đảm bảo cơ chế refresh token hoạt động đúng sẽ giúp giảm đáng kể lỗi 401 cho người dùng cuối.
Hy vọng bài viết giúp bạn hiểu rõ và xử lý được lỗi 401. Nếu có thắc mắc gì thêm, để lại comment bên dưới nhé.
Có thể bạn cần xem thêm
- Lỗi ERR_CACHE_MISS: nguyên nhân và cách khắc phục
- Lỗi ERR_CONNECTION_TIMED_OUT: nguyên nhân và cách khắc phục
- Lỗi 504 Gateway Timeout: nguyên nhân và cách khắc phục
- Lỗi 502 Bad Gateway: nguyên nhân và cách khắc phục
- Lỗi DNS_PROBE_FINISHED_NXDOMAIN: nguyên nhân và cách khắc phục
- Lỗi ERR_NAME_NOT_RESOLVED: nguyên nhân và cách khắc phục
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.