HTTP Protokolü Nedir?

HTTP Protokolü Nedir?
HTTP protokolü, bir sunucu ve istemci arasında iletişim sağlamak için kullanılır. İstemci, istek yöntemleri kullanarak sunucuya istekler gönderir ve sunucu, durum kodlarıyla yanıt verir.
HTTP İstek Yöntemleri
- GET: Sunucudaki kaynakları (verileri) almak için kullanılır. Sunucudan veri çeker.
- POST: Sunucuya veri yazmak için kullanılır. Yeni kaynaklar oluşturmak, form göndermek, dosya yüklemek veya yeni bir veri kaydı oluşturmak için kullanılabilir. Her form gönderimi yeni bir kayıt oluşturabilir.
- PUT: Sunucudaki kaynakları güncellemek için kullanılır. Örneğin, bir dosya PUT yöntemiyle yüklendiğinde, her zaman aynı dosya alınır. Aynı isteğin birden fazla kez gönderilmesi aynı sonucu verir.
- PATCH: Bir kaynağın belirli bir kısmını günceller. Aynı isteğin birden fazla kez gönderilmesi aynı sonucu verir. PUT yöntemine göre daha hızlıdır.
- DELETE: Sunucudaki kaynakları silmek için kullanılır. Örneğin, bir kullanıcı hesabını, ürün kaydını veya veritabanındaki herhangi bir kaydı silmek için kullanılabilir.
- CONNECT: Bir kaynağa proxy veya birden fazla hedef üzerinden erişmek için kullanılır.
- HEAD: Sunucu hakkında bilgi almak için kullanılır. Bir web tarayıcısı, bir web sayfasına ilk kez eriştiğinde, genellikle sayfanın meta verilerini (boyutu, türü vb.) almak için HEAD yöntemini kullanır. Bu, sayfanın daha hızlı yüklenmesini sağlar.
- OPTIONS: Sunucuda hangi yöntemlerin desteklendiği hakkında bilgi verir. Bir kaynak üzerinde hangi işlemlerin gerçekleştirilebileceğini belirlemeye yardımcı olur (GET, POST, PUT, DELETE vb.).
- TRACE: İstemci ile sunucu arasındaki ara hedefleri (proxy sunucular veya ağ geçitleri) kontrol etmek için kullanılır. Bir isteğin geçtiği tüm adımları ve bu noktalarda yapılan değişiklikleri gösterir. Hata teşhisi ve isteklerdeki beklenmedik değişiklikleri anlamak için kullanılır.
- SEARCH: Belirli bir kaynağın altında sorgu yapmayı sağlar.
Bu yöntemleri görmek için “Geliştirici Araçları”nı (Developer Tools) açarak ağ (network) sekmesini inceleyebiliriz.
HTTP Yanıt Durum Kodları
Bu kodlar, istemciye sunucu ve istemci arasındaki HTTP iletişiminin durumunu bildiren sayısal kodlardır. İstemci, sunucuya yöntemler gönderir ve sunucu, bu durum kodlarıyla yanıt verir.
- 1xx (Bilgi): Sunucu, isteği işlemeye devam ettiğini ve işleme devam edeceğini bildirir. Genellikle geçici durumlardır ve ek bilgi sağlar.
- 2xx (Başarı): İstek başarıyla tamamlandı. Kaynak bulundu ve yanıt olarak gönderildi.
- 3xx (Yönlendirme): İstenen kaynak başka bir URL’de bulunuyor. İstemcinin yeni URL’ye yönlendirilmesi gerekiyor.
- 4xx (İstemci Hatası): İstemci tarafından yapılan bir hata nedeniyle istek tamamlanamadı. Örneğin, yanlış URL veya yetkisiz erişim gibi durumlar.
- 5xx (Sunucu Hatası): İstek, sunucu tarafındaki bir hata nedeniyle tamamlanamadı. Örneğin, sunucunun aşırı yüklenmesi veya iç sunucu hatası.
Önemli HTTP Durum Kodları
1xx (Bilgilendirme Kodları)
- 100: Sunucu isteği hala işliyor ve tamamlanmasını bekliyor. Sunucu, belirli bir süre işlemeye devam edebilir ve ardından sonuç döndürebilir.
- 101: Sunucu, başka bir protokole geçiş yapıyor.
- 103: Sunucu, nihai isteğin tamamlanmasından önce bazı yanıt başlıklarını (headers) gönderdi. Uzun süren isteklerde veya birden fazla aşamadan oluşan işlemlerde kullanılır.
2xx (Başarılı Yanıtlar)
- 200: İstek başarıyla tamamlandı ve istenen kaynak döndürüldü. En yaygın HTTP durum kodudur.
- 201: Yeni bir kaynak oluşturuldu. Örneğin, bir form gönderildiğinde yeni bir kayıt oluşturulursa bu kod döndürülür.
- 203: Kaynak sunucu tarafından başarıyla işlendi, ancak istemci tarafından değiştirildi. Örneğin, bir proxy sunucusu içeriği filtrelemiş olabilir.
- 204: İstek başarıyla tamamlandı, ancak sunucu döndürülecek bir içerik içermiyor.
3xx (Yönlendirme Kodları)
- 301: İstenen kaynak kalıcı olarak yeni bir URL’ye taşındı. Tarayıcılar otomatik olarak yeni URL’ye yönlendirilir.
- 302: İstenen kaynak geçici olarak başka bir URL’de bulunuyor. Genellikle dinamik içeriklerde kullanılır.
- 304: Sunucu, istemcinin yerel kopyasının güncel olduğunu bildirir ve yeni bir içerik göndermesine gerek kalmaz.
4xx (İstemci Hata Kodları)
- 401: İstemcinin kimlik doğrulaması yapması gerekiyor.
- 403: İstemcinin istenen kaynağa erişim izni yok.
- 404: İstenen kaynak bulunamadı. En yaygın istemci hatalarından biridir.
- 405: İstenen kaynak için belirtilen HTTP yöntemi (GET, POST, PUT vb.) desteklenmiyor.
5xx (Sunucu Hata Kodları)
- 500: Beklenmeyen bir sunucu hatası oluştu. Genellikle sunucu tarafındaki kod hatalarından kaynaklanır.
- 502: Sunucu, daha üst düzey bir sunucudan geçersiz bir yanıt aldı.
HTTP Başlıkları (Headers)
HTTP başlıkları, istemci ve sunucu arasında değiştirilen metinsel bilgilerdir. İstek (Request) ve yanıt (Response) sırasında nasıl bir iletişim kurulacağını belirler.
HTTP İstek Başlıkları (Request Headers)
- Host: Erişim sağlanan web sunucusunun adresini belirtir.
- User-Agent: İstemcinin tarayıcı adı, sürümü ve işletim sistemi bilgilerini içerir.
- Accept: İstemcinin kabul edebileceği dosya türlerini belirtir.
- Accept-Language: İstemcinin tercih ettiği dil bilgisini içerir.
- Accept-Encoding: İstemcinin kabul edebileceği sıkıştırma türlerini belirtir.
- If-Modified-Since: Önbellekteki kaynağın son değişiklik tarihini belirtir ve değişiklik olup olmadığını kontrol eder.
- Cookie: Önceki ziyaretler, oturum bilgileri ve kimlik bilgilerini içerir.
- Referer: İstemcinin yeni URL’ye yönlendirilmesine neden olan önceki sayfanın adresini gösterir.
- Authorization: Kimlik doğrulama yöntemi ve kimlik bilgilerini içerir.
HTTP Yanıt Başlıkları (Response Headers)
- Cache-Control: İçeriğin önbelleğe alınıp alınamayacağını kontrol eder.
- Content-Type: İçeriğin türünü belirtir.
- Content-Length: İçeriğin bayt cinsinden boyutunu belirtir.
- Etag: Önbelleğe alınan içeriğin benzersiz kimliğini sağlar.
- Set-Cookie: Çerez (cookie) bilgilerini ayarlar veya değiştirir.