İçerikler

    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 - Unauthorized

    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

    1. Ö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.

    2. Ö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.

    3. Ö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

    KodAçıklama
    401.1Oturum 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.2Sunucu yapılandırması nedeniyle oturum açma başarısız oldu - Sunucudaki kimlik doğrulama yapılandırmasında bir sorun var.
    401.3Kaynaktaki ACL nedeniyle yetkisiz - NTFS dosya sistemi izinleri nedeniyle erişim engellendi.
    401.4Filtre tarafından yetkilendirme başarısız oldu - Bir ISAPI filtresi yetkilendirme sorunları nedeniyle isteği engelledi.
    401.5ISAPI/CGI uygulaması tarafından yetkilendirme başarısız oldu - ISAPI veya CGI uygulaması yetkilendirme sorunları nedeniyle isteği engelledi.
    401.501Erişim reddedildi: eşzamanlı istek oranı sınırına ulaşıldı - Aynı istemciden çok fazla eşzamanlı istek IP.
    401.502Eriş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.503Erişim reddedildi: IP adresi reddedildi - İstemci IP adresi reddedildi listesinde.
    401.504Erişim reddedildi: ana bilgisayar adı reddedildi - İstemci ana bilgisayar adı reddedildi listesinde.