Sunucu yanıtı 401 Unauthorized
HTTP Durum Kodu 401 (Yetkisiz)
HTTP durum kodu 401, isteğin uygulanmadığını belirtir çünkü hedef kaynak için geçerli bir kimlik doğrulama eksiktir. Bu kod, web geliştirme sürecinde sıkça karşılaşılan bir durumdur ve özellikle API'lerle çalışırken geliştiriciler arasında yanlış anlamalara neden olabilir. Bu makalede, 401 durum kodunun ortaya çıkma nedenlerini, pratik örneklerini ve farklı programlama dillerinde nasıl düzeltileceğini ele alacağız.
401 Durum Kodunun Ortaya Çıkma Nedenleri
- Kimlik doğrulama verilerinin eksikliği
- Yanlış kullanıcı bilgileri
- Süresi dolmuş erişim token'ları
- Yanlış kimlik doğrulama başlıkları formatı
Pratik Örnekler
-
Örnek 1: Korunan bir kaynağa erişim hatası
Açıklama: Kullanıcı, kimlik doğrulaması gerektiren bir API'ye erişmeye çalışıyor ancak hiçbir kimlik bilgisi sağlamıyor.
Beklenen davranış: Sunucu, 401 durumu döner.
-
Örnek 2: Yanlış kimlik bilgileri
Açıklama: Kullanıcı, yanlış bir kullanıcı adı ve şifre ile istek gönderiyor.
Beklenen davranış: Sunucu, 401 durumu ile başarısız kimlik doğrulama mesajı döner.
-
Örnek 3: Süresi dolmuş token kullanımı
Açıklama: Kullanıcı, süresi dolmuş bir token ile erişim sağlamaya çalışıyor.
Beklenen davranış: Sunucu, 401 durumu ile token'ı yenileme isteği gönderir.
Farklı Programlama Dillerinde Hata 401'i Düzeltme Yöntemleri
JavaScript (Node.js)
Kimlik doğrulamasını jsonwebtoken
kütüphanesi ile işleyin.
const jwt = require('jsonwebtoken');
app.get('/protected', (req, res) => {
const token = req.headers['authorization'];
if (!token) {
return res.status(401).send('Unauthorized');
}
jwt.verify(token, 'secret_key', (err, user) => {
if (err) {
return res.status(401).send('Unauthorized');
}
res.send('Access granted');
});
});
Python (Flask)
Kimlik doğrulama verilerini kontrol etmek için Flask
kütüphanesini kullanın.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/protected')
def protected():
auth = request.authorization
if not auth or not (auth.username == 'user' and auth.password == 'pass'):
return jsonify({'message': 'Unauthorized'}), 401
return jsonify({'message': 'Access granted'})
PHP
Kimlik doğrulamasını başlıklar aracılığıyla işleyin.
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('HTTP/1.0 401 Unauthorized');
echo 'Unauthorized';
exit;
} else {
if ($_SERVER['PHP_AUTH_USER'] !== 'user' || $_SERVER['PHP_AUTH_PW'] !== 'pass') {
header('HTTP/1.0 401 Unauthorized');
echo 'Unauthorized';
exit;
}
echo 'Access granted';
}
?>
401 Hata Kodu ile İlgili Önemli Bilgiler
Neden | Açıklama |
---|---|
Kimlik doğrulama verilerinin eksikliği | Kullanıcıdan hiç kimlik bilgisi alınmadı. |
Yanlış kullanıcı bilgileri | Kullanıcı, hatalı bir kullanıcı adı veya şifre sağladı. |
Süresi dolmuş token | Kullanıcı, geçerliliği sona ermiş bir token kullanıyor. |
Yanlış kimlik doğrulama formatı | Kimlik doğrulama başlıkları uygun formatta değil. |
Bu makalede, 401 (Yetkisiz) durum kodunun anlamını, nedenlerini, örneklerini ve çeşitli programlama dillerinde nasıl düzeltileceğini inceledik. Geliştiricilerin bu durumu anlaması, API'lerle çalışırken karşılaştıkları hataları daha iyi yönetmelerine yardımcı olacaktır.
Ek Kodlar
Kod | Açıklama |
---|---|
401.1 | Oturum açma başarısız oldu - Oturum açma girişimi yanlış kullanıcı adı veya parola nedeniyle başarısız oldu. |
401.2 | Sunucu yapılandırması nedeniyle oturum açma başarısız oldu - Sunucudaki kimlik doğrulama yapılandırmasında bir sorun var. |
401.3 | Kaynaktaki ACL nedeniyle yetkisiz - NTFS dosya sistemi izinleri nedeniyle erişim engellendi. |
401.4 | Filtre tarafından yetkilendirme başarısız oldu - Bir ISAPI filtresi yetkilendirme sorunları nedeniyle isteği engelledi. |
401.5 | ISAPI/CGI uygulaması tarafından yetkilendirme başarısız oldu - ISAPI veya CGI uygulaması yetkilendirme sorunları nedeniyle isteği engelledi. |
401.501 | Erişim reddedildi: eşzamanlı istek oranı sınırına ulaşıldı - Aynı istemciden çok fazla eşzamanlı istek IP. |
401.502 | Erişim reddedildi: maksimum istek oranı sınırına ulaşıldı - İstemci IP'si belirtilen süredeki maksimum istek sayısını aştı. |
401.503 | Erişim reddedildi: IP adresi reddedildi - İstemci IP adresi reddedildi listesinde. |
401.504 | Erişim reddedildi: ana bilgisayar adı reddedildi - İstemci ana bilgisayar adı reddedildi listesinde. |