401 Unauthorized Nedir?
Kısa tanım
401 Unauthorized, isteğin hedef kaynak için geçerli kimlik bilgileri içermediği için uygulanmadığını bildiren HTTP durum kodudur. Adı “yetkisiz” dese de asıl anlamı “kimliği doğrulanmamış”tır. Sunucu, istemcinin nasıl kimlik doğrulaması yapacağını anlatan WWW-Authenticate başlığını göndermek zorundadır; istemci yeni ya da geçerli bilgilerle isteği tekrarlayabilir.
Diğer adları: HTTP 401, 401 hatası, kimlik doğrulama gerekli

İsim yanıltıcı: sorun yetki değil, kimlik
HTTP'nin en bilinen isim hatalarından biri budur. 401'in adı “Unauthorized” olsa da anlattığı durum kimlik doğrulamanın yapılmamış ya da başarısız olmuş olmasıdır: sunucu karşısındakinin kim olduğunu bilmiyor. Kim olduğu bilinen ama o kaynağa erişme izni olmayan bir kullanıcı için doğru kod 403 Forbidden'dır; o durum yetkilendirme sorunudur.
Pratik bir ayrım: 401 “kendini tanıt” der ve istemcinin farklı bilgilerle tekrar denemesini bekler; 403 “seni tanıyorum, ama hayır” der.
WWW-Authenticate başlığı zorunludur
RFC 9110'a göre 401 üreten sunucu, kaynak için geçerli en az bir kimlik doğrulama yöntemini bildiren WWW-Authenticate başlığını göndermek zorundadır. Bu başlık olmadan istemci ne yapması gerektiğini bilemez.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="staging"
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token",
error_description="The access token expired"İlk örnek tarayıcının kullanıcı adı ve parola soran yerleşik penceresini açar. İkincisi token tabanlı API'lerde kullanılan biçimdir ve OAuth 2.0 bearer token standardından (RFC 6750) gelir.
API'lerde 401 ile 403'ü doğru ayırmak
| Durum | Kod | İstemci ne yapmalı? |
|---|---|---|
| Token hiç gönderilmemiş | 401 | Kimlik doğrulayıp yeniden denemeli |
| Token süresi dolmuş, iptal edilmiş ya da bozuk | 401 (invalid_token) | Yeni token alıp bir kez daha denemeli |
| Token geçerli ama gereken kapsam (scope) yok | 403 (insufficient_scope) | Aynı token'la tekrar denememeli |
Bu ayrım istemci kodunu doğrudan etkiler. İyi bir istemci 401 aldığında erişim token'ını yenileyip isteği bir kez tekrarlar; 403'te ise yenilemenin işe yaramayacağını bilir ve kullanıcıya yetki hatası gösterir. Her yetki hatasına 401 dönen bir API, istemcileri gereksiz yenileme döngülerine sokar.
Arama motorları ve 401
Google, 401'i diğer 4xx kodları gibi “içerik yok” olarak işler: URL dizine eklenmez, daha önce eklenmişse çıkarılır. Search Console'un Sayfa dizine ekleme raporunda bu sayfalar 401 kodunu adıyla anan ayrı bir neden altında (İngilizce arayüzde “Blocked due to unauthorized request (401)”) listelenir. Bu davranış bir avantaj olarak da kullanılabilir: staging ortamını HTTP kimlik doğrulamasının arkasına almak, robots.txt'ye güvenmekten çok daha sağlam bir korumadır; robots.txt taramayı engeller ama bağlantı verilen bir URL'nin dizinde görünmesini tek başına engellemez. Google ayrıca 401 ve 403'ün tarama hızını sınırlamak için kullanılmamasını açıkça belirtir.

