HTTP 401 Unauthorized

Kimlik doğrulama gerekli: sunucu kim olduğunuzu bilmiyor veya kimlik bilgileriniz artık geçerli değil.

HTTP 401 ne anlama gelir

HTTP 401 Unauthorized, isteğin geçerli kimlik doğrulama bilgilerinden yoksun olduğu için reddedildiği anlamına gelir. Adına rağmen, bu kimlik doğrulama (kim olduğunuz) ile ilgilidir, yetkilendirme (ne yapabileceğiniz) ile değil — ikinci durum 403 Forbidden'dır.

Spesifikasyona uygun bir 401, nasıl kimlik doğrulanacağını açıklayan bir WWW-Authenticate başlığı içerir; örneğin token API'leri için Bearer veya klasik HTTP kimlik doğrulaması için Basic.

401 hatalarının yaygın nedenleri

  • Hiç kimlik bilgisi gönderilmedi (eksik Authorization başlığı veya oturum çerezi).
  • Süresi dolmuş, iptal edilmiş veya hatalı biçimlendirilmiş bir token — en yaygın API nedeni.
  • Yanlış kimlik doğrulama şeması (Bearer token beklenirken bir API anahtarı gönderilmesi).
  • Oturumu kapatılmış bir oturum: bir sekme açık kalırken çerezlerin süresi doldu veya temizlendi.
  • Kısa ömürlü JWT'lerin varışta süresi dolmuş gibi görünmesine neden olan saat sapması.

Bir kullanıcı olarak nasıl düzeltilir

  • Tekrar giriş yapın — oturumun süresi büyük olasılıkla dolmuştur.
  • Döngüye giriyorsa, sitenin çerezlerini temizleyin ve yeniden oturum açın.
  • URL'nin, sahip olmadığınız bir hesap gerektiren bir yönetici veya hazırlık (staging) alanı olmadığını kontrol edin.

Bir geliştirici olarak nasıl düzeltilir

  • Süresi dolmuş token'ları yenileyin veya yeniden verin; API istemcilerinde otomatik token yenilemesi uygulayın.
  • Authorization başlığını tam olarak beklenen biçimde gönderin ("Bearer <token>" — kelime ve boşluk önemlidir).
  • 401'i yalnızca eksik/geçersiz kimlik bilgileri için, 403'ü ise hakları eksik geçerli kullanıcılar için döndürün, böylece istemciler doğru tepki verebilir.
  • JWT "exp" doğrulaması beklenmedik şekilde başarısız olduğunda sunucu zaman senkronizasyonunu (NTP) doğrulayın.

Örnek yanıt

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token", error_description="expired"

SSS

401 ile 403 arasındaki fark nedir?

401, sunucunun sizin için geçerli kimlik bilgilerine sahip olmadığı anlamına gelir — giriş yapın veya token'ı yenileyin. 403 ise kim olduğunuzu bildiği hâlde yine de reddettiği anlamına gelir.

Geçerli bir token ile neden 401 alıyorum?

Yaygın nedenler: süresi dolmuş token, yanlış başlık biçimi, farklı bir ortam veya kitle için verilmiş token, ya da sunucu saat sapması.

Başarısız bir giriş 401 döndürmeli mi?

API'ler için, evet, açıklayıcı bir gövdeyle birlikte. Web giriş formları genellikle bunun yerine sayfada bir hata mesajıyla 200 döndürür.