Teknik SEO

HTTP (Hypertext Transfer Protocol) Nedir? Nasıl Çalışır ?

HTTP (Hypertext Transfer Protocol), bilgisayarlar ve ağ sistemleri arasında gerçekleşen iletişimde kullanılan uygulama katmanı protokolüdür. HTTP temelde World Wide Web (www) için istemci – server veri iletişiminin temelini (protokolünü, kurallarını) oluşturarak, web sayfalarında yer alan hiper metin bağlantılarını (hypertext links) kullanarak web sayfalarını yüklemek için kullanılır. Tipik bir HTTP akışı, bir sunucuya istekte bulunan istemci (genellikle web tarayıcı) ve ardından bir yanıt mesajı döndüren sunucuyu (server) içerir.

HTTP akışı içerisinde sunucu ve istemci birbirine gönderdikleri istek mesajları, yanıtlar üzerinden iletişim sağlar. İstemci tarafından bir kaynağı almak için gönderilen mesajlar istek (request) ve sunucu tarafından gönderilen isteğe döndürülen cevaplar yanıt (response) olarak adlandırılır.

HTTP yalnızca hypertext dokümanların getirilmesinde kullanılmaz. Genişletilebilirliği sayesinde resimler, videolar vb elementlerin getirilmesinde ve sunucuya istenilen elementlerin aktarılmasında (post edilmesinde) kullanılır. Web sayfalarında kullanılan herhangi bir formun güncellenerek bilginin servera aktarılmasında (post edilmesinde) yada web sayfasının bir bölümünün güncellenmesinde kullanılabilir.

Kısa HTTP Tarihi

HTTP ilk defa 1989 yılında WWW (world wide web) inde yaratıcısı olan Tim Berners-Lee tarafından CERN’de geliştirilmeye başlanmıştır. HTTP’nin resmi olarak belgelenen ilk versiyonu 1991 yılında HTTP 0.9 versiyon numarasıyla yayınlanmıştır. 1991 yılında yayınlanan HTTP 0.9’ın ilk belgesi istemci server iletişiminde kullanılacak HTTP ve gerçekleşecek iletişimi oldukça basit bir şekilde anlatan bir belgeydi.

HTTP versiyon 09 da yalnızca sunucudan bir belgeyi istemek için kullanılan “GET” methodu bulunmaktaydı.

HTTP, HTTP-WG tarafından ek yöntemler, methodlar ve başlık alanları eklenerek, daha kapsamlı meta bilgiler aktarmak amacıyla geliştirilmek istendi. 1996 yılında RFC 1945 HTTP 1.0’ı duyurdu. Ocak 1997’de RFC 2068, HTTP/1.1’ı spesifikasyonları ile birlikte resmi olarak duyurdu.

HTTP’nin günümüzde en yoğun kullanılan versiyonlarından 2.0 RFC-7540 olarak 2015 yılında ve HTTP 3.0 2020 yılında duyuruldu.

Temel HTTP Bileşenleri Nelerdir?

HTTP akışı içerisinde istemci server iletişimi gerçekleşirken bu akışta görev alan, akışı oluşturan çeşitli temel bileşenler mevcuttur. Bunlar user-agent (istemci aracısı), proxy (vekil sunucular) ve web serverlardır (sunucular). İstemciden web serverlara (sunuculara) iletilen istekler user-agent (istemci aracısından) yada istemci aracısı ile sunucu arasında bir vekil ikincil sunucu görevi gören proxyler üzerinden iletilir.

Tipik istemci aracısı genellikle web browserlar yani kullanıcıların internet tarayıcılarıdır ancak bir web servera istek yalnızca reel kullanıcı user-agentlarından iletilmez. Web de tarama gerçekleştiren bot (örümcekler) yada çeşitli istek gönderebilen uygulamalarda user-agent olarak istek oluşturabilir.

İstemciden gönderilen istekler (reel kullanıcı user-agent’ı olup olmaması fark etmeksizin) ilgili serverlara iletilir ve yetkili serverlar istekler ile alakalı yanıtlar döndürür. İstemci tarafından gönderilen istek, kaynakların barındırıldığı sunucudan önce vekil görevi gören başka bir proxy sunucusuna oradanda ana sunucuya iletilebilir. Bu tarz bir senaryoda ana sunucudan dönen yanıtlarda istemciye gitmeden önce proxy yani vekil sunucuya gider.

Proxy sunucusuna örnek olarak cloudflare proxy serverlar örnek verilebilir.

Proxy serverlar ana sunucuların güvenlik amacıyla gizlenmesi, istek ve yanıtların cachelenerek istemci – server iletişiminin hızlanması gibi süreçlerde görev alırlar.

İstemci (User-Agent)

User-agent (Kullanıcı aracısı), kullanıcı adına hareket eden herhangi bir uygulama, aracıya verilen isimdir. Bu rol genellikle web tarayıcıları (browserlar) tarafından gerçekleştirilir, ancak çeşitli istek gönderebilen uygulamalarda user-agent olarak istek oluşturarak istemci olabilirler.

HTTP akışı içerisinde gerçekleşen istemci server iletişiminde istemci tarafında user-agent rolünü genellikle tarayıcılar üstlenir ve istemci adına bir web sayfasına ulaşmak amacıyla servera yada serverın vekil sunucusu görevi gören proxy servera istek gönderir.

İstek proxy sunucu tarafından alınmış ise isteğin gönderildiği web sayfası ile alakalı bilgilere erişilmek üzere alınan istek ana sunucuya gönderilebilir yada istek gönderilen kaynağa ilişkin bir önbellek (cache) proxy sunucusunda mevcut ise önbelleğin güncelliği kontrol edilip yanıt döndürülür.

Proxy sunucuda herhangi bir önbellek mevcut değil ise istek gönderilen kaynak ile alakalı talep ana sunucuya iletilir. Proxy (vekil) bir sunucunun kullanılmadığı durumda istemci istekleri doğrudan web sayfasının barındırıldığı ana sunucuya gider. İstemci – server iletişiminde DNS serverları gibi çok çeşitli serverlarda farklı görevler üstlenir ancak temelde HTTP istemci (user-agent) – server veri alışveriş modeli basitleştirilmiş hali ile bu şekildedir.

İstemci (user-agent) tarafından erişilmek üzere istek gönderilen web sayfası ile alakalı HTML dokümanı içeren yanıt, sunucu tarafından web tarayıcıya iletilir ve web tarayıcı ilgili kaynağı parse ederek (ayrıştırarak, işleyerek) sayfayı oluşturan ekstra kaynaklar ile alakalı yeni istekler gönderir.

İstek gönderilen web sayfasını oluşturan CSS, JS, resimler vb sayfa üstü statik kaynaklarda HTTP istek – yanıt akışı ile elde edilir ve web sayfası buna göre oluşturulur.

Önemli Not: İstemci tarafından erişilmek üzere istek gönderilen web sayfalarının tümü için HTTP 200 (OK) yanıt kodu döndürülemeyebilir. İstek gönderilen kaynak yönlendirildiyse (301,302,307), silindiyse (HTTP 404,410) yada sunucu kaynaklı bir hata söz konusu ise HTTP (500 ve türevi) yanıt kodları sunucu tarafından döndürülebilir. Bknz: HTTP Durum (Yanıt) Kodları (HTTP Status Codes)

Web Server (Web Sunucuları)

İstemci – server iletişiminin diğer ucunu temsil eden web server,  web sitesi ile alakalı kaynakları barındırır, bunları işler ve istemci (istemcilerden) gelen HTTP isteklerine HTTP yanıtları döndürür. HTTP isteklerine yanıt döndüren sunucu, HTTP başlıklarında sanal olarak tek bir sunucu olarak görünebilir ancak istemciden gelen istekleri dağıtan çoklu sunucu yapılarından oluşan load balancer server yapıları da (istek yüklerini dengeleyen çok sayıda serverdan oluşan web server yapısı) kullanılabilir.

HTTP isteği gönderilen bir dokümanın kaynaklarının birden fazla sunucuda barındırılması ve istek sonrası kaynakların farklı farklı sunuculardan çekilerek yüklenmesi mümkündür. Bir veya birden fazla sunucu tek bir web sayfasını yada web sayfasının belirli bölümlerini oluşturabilir.

Proxy (Vekil Sunucular)

İstemci – server (istek gönderilen kaynağın barındırıldığı sunucu) iletişimi sürecinde çok sayıda ara sunucu (bilgisayar) HTTP mesajlarının iletilmesinde görev alır.  Bilgisayarlar arasında gerçekleşen ağ bağlantısının uygulama (application) katmanında, HTTP akışlarında görev alan ara sunuculara genellikle proxy  (vekil sunucu) adı verilir.

Proxyler, ara sunucular olarak istemciden gelen isteklerin doğrudan iletilmesinde, filtrelenmesinde, yetkilendirilmesinde, istek yükünün dağıtılmasında ve önbelleklenmesinde görev alabilirler. Üstlendikleri göreve göre HTTP başlıklarında açık olarak görüntülenebilir yada gizli kalabilirler.

HTTP Mesajları Nedir?

HTTP mesajları (HTTP Messages), bir sunucu ve istemci arasında gerçekleşen veri alışverişinin nasıl yapıldığının aktarıldığı bölümlere verilen isimdir. HTTP mesajları HTTP 1.1 ve önceki versiyonlarda açık bir şekilde görüntülenip okunabilir şekilde gönderilmekteydi. HTTP/2 ve sonraki versiyonlar ile HTTP mesajları binary bir yapıya gömülmüş ve HTTP çerçevelerine (framelere) bölünmüştür.

HTTP veri alışverişi sürecinde gerçekleşen iki tip mesaj grubu vardır.

Bunlar ;

HTTP request ve response message örnekleri
HTTP request ve response message örnekleri Image-Source: Mozilla
  • HTTP İstek Mesajları (Request): Sunucuda bir eylemi tetiklemek için istemci tarafından gönderilen isteklere ait mesajlardır.
  • HTTP Yanıt Mesajları (Response): HTTP isteklerine verilen yanıtlar ; Sunucu tarafından gönderilen isteklere verilen yanıtlar ve sunucunun gönderdiği yanıta istemcinin verdiği yanıtlar.

HTTP İsteği Nedir?

Örnek bir http isteği
Örnek bir http isteği image-source: developer-mozilla.org

HTTP isteği (HTTP request), sunucuda bir eylem başlatmak ve erişilmek istenilen kaynağı yüklemek için ihtiyaç duyulan kaynakların yüklenebilmesi için istemci ( kullanıcı aracısı) tarafından gönderilen mesajlardır.

İstemciden gönderilen HTTP istek mesajları, isteklerin kapsamı ile alakalı veriler kodlanmış (encoded) şekilde internet ağı üzerinden yetkili, aracı sunuculara aktarılır.

Bir HTTP isteği birden çok bileşenin birleşimi ile oluşur.

Bunlar ;

  1. HTTP istek satırı
  2. URL – İstemci, istekte bulunmak ve kaynağa erişmek için gereken bilgileri içeren bir URL’nin  bileşenlerini kullanır. Bir URL’nin bileşenleri, erişilmek istenilen kaynağı açıklar. (URL Bileşenleri: HTTP Schema (HTTP – HTTPS), Domain (Host), URL Yolu (Path), Söz dizimi (parametreler))
  3. HTTP versiyonu ( Örn: HTTP 1/1, 2 yada 3)
  4. HTTP metodu (GET, POST vb)
  5. HTTP istek başlığı (HTTP Request Header)
  6. HTTP İstek Gövdesi (HTTP Request Body) – HTTP istek gövdesi opsiyoneldir.

Örnek bir HTTP istek satırı şu şekildedir:

GET (Method) /hyper-text-transfer-protocol (Path) HTTP 1.1 (HTTP versiyonu)

HTTP İstek Metodları Nelerdir?

HTTP istek metodları, istek gönderilen kaynakta gerçekleştirilmesi (başlatılması) istenen eylemi belirtmek için kullanılan methodlara verilen isimdir. İstemci isteğin gönderildiği sunucuda yapmak istediği işlemi methodlar aracılığı ile HTTP mesajlarını kullanarak aktarır. Klasik bir HTTP akışında gönderilen HTTP istek metoduna (yöntemine) bağlı olarak sunucu, genellikle istemciye bir HTML dokümanını istek çıktısı olarak döner. Sunucu gönderilen HTTP isteğine bağlı olarak her zaman bir çıktı dönmek durumunda da değildir. İstemciden gönderilen istek ile sunucu üzerindeki bir verinin silinmesi, güncellenmesi gibi talepler iletilebilir.

HTTP 1.0 versiyonunda ilk olarak GETPOST ve HEAD metodları yayınlanmıştır. Devamında HTTP 1.1 ile 5 yeni metod daha eklenmiştir. Eklenen metodlar ; PUTDELETE, CONNECT, OPTIONS, ve TRACE‘dir. HTTP metodlarına tanımlabilecek yöntem sayısında herhangi bir kısıtlama yoktur.

İstemci bir kaynağa bu metodlardan herhangi birini gönderebilir ve sunucu bu http metodlarından herhangi bir veya bir kaçını cevaplayacak şekilde düzenlenebilir. Sunucu gönderilen tüm HTTP istek metodlarına yanıt vermek, işleme almak durumunda değildir. Bir kaynağa yönelik gönderilen DELETE isteği sunucu tarafında configure edilmedi ise istek başarısız olur ve sunucu HTTP yanıtında hata, engelleme mesajı dönebilir.

GET Metodu

Get metodu, isteğin gönderildiği kaynaktan data ve kaynak almak amacıyla kullanılan metoddur. Mevcut durumun, istek gönderilen verinin bir kopyasının alınması dışında başka bir amaç ve işlevi yoktur.

HEAD Metodu

Head metodu, GET metodundan farklı olarak isteğin gönderildiği bir kaynaktan body olmaksızın meta dataların alınması için kullanılan metoda verilen isimdir. GET metodu ile benzer olarak isteğin gönderildiği kaynaktan data alma amacıyla kullanılır ancak bu isteğe verilen yanıtlar HTTP body datası içermez.

POST Metodu

Post metodu (yöntemi), gönderilen istekte yer alan kaynağın, sunucu tarafından hedef URL’in yeni bir alt kaynağı olarak kaydedilmesi amacıyla kullanılan istek metodudur. Post metodu ile istemciden gönderilen istekte belirtilen kaynak (örneğin bir kullanıcı yorumu) hedef sunucuya iletilerek bu kaynağın veritabanına, sunucuya kaydedilmesi ve ilgili datanın siteye eklenmesi sağlanır.

Bu metodun kullanıldığı işlemlere örnek olarak; E-ticaret sitelerinde alışveriş tamamlama işlemleri, Form yanıtları ve forum, kullanıcı yorumları verilebilir.

PUT Metodu

Put metodu, gönderilen istek de belirtilen kaynağın durumunun hedef URL’de güncellenmesi yada ilgili kaynağa ilişkin bir kayıt yok ise oluşturulması ve kaynağın belirtilen URL de stoklanması amacıyla kullanılan istek metodudur. Post metodundan farklı olarak PUT metodu ile sunucuya gönderilen kaynağın nihai adresi (hedefi) belirtilir.

DELETE Metodu

Delete metodu, hedef kaynağa yönelik belirtilen verinin silinmesinin istendiği methoddur.

CONNECT Metodu

Connect methodu, istek tarafından tanımlanan kaynak sunucuya bir TCP/IP tüneli kurulmasında kullanılan methoddur.

OPTIONS Metodu

Options Metodu, isteğin gönderildiği sunucunun desteklediği HTTP methodlarının alınmasında kullanılan methoddur. Sunucunun HTTP isteklerine yönelik işlevselliğinin ölçümlenmesinde kullanılır.

TRACE Metodu

Trace Metodu, isteğin gönderildiği istemci tarafından gönderilen isteğin sunucu tarafından geri istenmesi amacıyla kullanılan istek metodudur. Bu metot kullanılarak ilk gönderilen isteğin ara sunucular tarafından değiştirilip değiştirilmediği kontrol edilebilir.

PATCH Metodu

Patch Metodu, hedef kaynağın durumunu, isteğe eklenen gösterimde tanımlanan kısmi güncellemeye göre değiştirmesini ister. Patch metodu ile hedef kaynağın istekte belirtilen şekilde kısmi olarak güncellenmesi sağlanır. Bu method ile bir kaynağın, dokümanın tümden istenmesi yada güncellenmesi yerine bir bölümünün güncellenmesi sağlanabilir. Böylece bandwith noktasında avantaj sağlanabilir.

HTTP İstek Başlıkları

HTTP request (istek) başlıkları, bir HTTP başlığının aynı temel yapısını izleyen, HTTP istekleri ile alakalı detayları hedef sunucuya iletilen başlıklardır. HTTP isteğinin iletildiği sunucu HTTP istek başlıklarında gönderilen bilgileri kullanarak yanıtı şekillendirir.

Örneğin HTTP isteği ile gönderilen accept başlığı sunucudan gelecek yanıtlarda nelerin kabul edileceğinin iletildiği başlıktır. Sunucu accept: http istek başlığında gelen bilgiyi kullanarak yanıtı şekillendirir.

http request header örneği
Chrome’dan alınmış örnek bir http request (öbeği)

Üstteki görselde HTTP istek başlıklarında işlevlerine göre ayrılmış başlık alanlarını ve istemci tarafından iletilen istek detaylarını görüntüleyebilirsiniz. Görselde görüntülenen HTTP istek başlığındaki authority bölümü host yani target domaini belirten bölümdür. Devamında gelen method bölümü HTTP isteğinin hangi method kullanılarak yapıldığının iletildiği bölümdür. Path bölümü HTTP istek satırında iletilen hedef sunucudan istenilecek, bağlanılmak istenen hedef URL yolunun belirtildiği alandır.

http request headers bölümleri
http istek başlıkları ve başlık bölümleri – Image Source: https://developer.mozilla.org/

Request (istek) bölümünün altında belirtilen başlıkların tamamı istek başlığı olarak adlandırılmaz. Bu bölümde belirtilen cache-control ve benzeri başlık türlerinin bazıları yetkilendirme, kontrol, önbellek gibi görevler üstlenen başlık alanlarıdır.

İsteğin nasıl ve ne şekilde gerçekleştiğinin aktarıldığı başlıklar request (istek) başlıkları olarak adlandırılırken HTTP isteği ile iletilen genel ve temsili başlıklar, general ve representation başlıkları olarak adlandırılırlar.

Üstteki örnek görselde yeşil olarak işaretlenmiş başlıklar, HTTP başlıklarında istekten bağımsız HTTP bağlantısı ile alakalı detayların, mesajların iletildiği başlık alanlarıdır. İlgili alanın hemen altındaki mavi bölümde yer alan başlıklar HTTP mesajı ile alakalı detayların iletildiği bölümlerdir.

Örn: Üstteki örnekte yeşil renk ile renklendirilmiş bölümdeki Connection: keep-alive kısmı,TCP bağlantısının ne şekilde yapılacağı ve bağlantının ne şekilde devam etmesi gerektiği ile alakalı datanın aktarıldığı bölümdür. HTTP isteğinden ve sunucudan gelecek yanıttan bağımsızdır.

HTTP İstek Başlıkları Nasıl Görüntülenir ?

Herhangi bir HTTP bağlantısı sonrası gönderilen HTTP istek başlıklarını görüntülemek için tarayıcıların developer tools bölümlerinde yer alan network (ağ) bölümleri kullanılabilir.

Örneğin: Chrome tarayıcısı açıkken f12’ye basayarak Chrome Devtools aracını açabilir ve açılan panel üzerinde yer alan network bölümünden veri alışveri gerçekleştirilen HTML dokümanı seçilerek istemciden gönderilen HTTP isteğine ait detayları ve sunucudan gönderilen HTTP yanıtına ait detayları görüntüleyebilirsiniz.

Bir HTTP veri alışverinde kullanılan kaynakların tümü ile alakalı detayları tarayıcıların dev tools bölümlerindeki network alanından görüntüleyebilirsiniz.

HTTP İstek Gövdesi (HTTP Request Body)

HTTP isteğinin final bölümü HTTP Body yani HTTP istek gövdesidir. HTTP Body bölümünde gönderilen istek ile sunucuda yapılmak istenen değişiklik ile alakalı datalar aktarılır.

Tüm HTTP isteklerinde body bölümü dolu olarak hedef sunucuya gönderilmez. Genellikle GET, HEAD, DELETE gibi isteklerde sunucuya herhangi bir değişken data gönderilmediğinden body bölümüne ihtiyaç yoktur.

PUT, PATCH gibi isteklerde http request body bölümü dolu olarak sunucuya istek gönderilir ve sunucunun body den gelen dataya göre güncelleme, işlem yapması beklenir. PUT isteklerinde HTTP body bölümünde genellikle istemci üzerinden sitede yapılan bir değişiklik ile alakalı güncelleme dataları gönderilir.

HTTP Yanıtı Nedir ?

http response örneği
Örnek bir HTTP yanıtı Image-Source: developer-mozilla.org

HTTP yanıtı (HTTP Response), istemcinin (genellikle tarayıcıların) gönderilen bir HTTP isteğine cevap olarak hedef yada ara sunuculardan aldığı yanıttır. Gönderilen HTTP isteği ile iletilen verilere bağlı olarak sunucu tarafından oluşturulan HTTP yanıtı ile gelen HTTP isteğine karşılık gelen datalar istemciye iletilir.

Tipik bir HTTP yanıtı aşağıdaki bileşenlerden oluşur ;

  • HTTP yanıt satırı (HTTP response line) Örn: Üstteki görselde HTTP/1.1 200 OK bölümü HTTP yanıt satırıdır.
  • HTTP protokolünün versiyonu (version of the HTTP protocol)
  • HTTP yanıt kodu (200,301,404,500 vb) (HTTP Status code)
  • HTTP yanıt kodu mesajı (HTTP status message)
  • HTTP yanıt başlıkları (istek başlıklarına benzer)
  • Duruma bağlı olarak istek gönderilen kaynağa yönelik dataları içeren HTTP gövdesi (HTTP response body)

HTTP Yanıt (Durum) Kodları

HTTP yanıt (durum) kodları, istemci tarafından gönderilen HTTP isteğine yönelik sunucunun döndürdüğü yanıt (cevap) kodlarına verilen isimdir. “HTTP/1.0 ve sonraki sürümlerinde, HTTP yanıtının ilk satırı durum satırı olarak adlandırılır ve bir sayısal durum kodu (“404” gibi) ve metinsel bir neden cümlesi (“Bulunamadı” gibi) içerir.”

Sunucu kurulan HTTP bağlantısı sonrası alınan HTTP isteklerinin sunucu tarafındaki karşılığını 3 digit den oluşan yanıt kodları ve yazılı cevap ile döndürerek istemcinin gönderilen istek ile alakalı bilgi sahibi olmasını sağlar. Sunucudan gelen yanıt koduna göre istemci aracısı (user-agent) gelen yanıtı işler ve kullanıcıya aktarır.

Gelen yanıt kodunun ilk hanesi gelen cevabın hangi gruba girdiğinin belirlenmesinde kullanılabilir. Sunucu tarafından istemcinin karşılığını bilmediği bir yanıt kodu döndürülürse istemci, gönderilen yanıt kodunun ilk hanesini kullanarak yanıtın ne tarz bir yanıt olduğunu anlamlandırmaya çalışır.

HTTP yanıt kodları ilk rakamlarına ve taşıdıkları mesajlara göre 5 e ayrılır. HTTP 1xx, 2xx, 3xx, 4xx, 5xx.

  • 1XX (100 Kodlu Yanıtlar): 1xx HTTP Durum kodları, kullanıcının bulunduğu isteğin sunucu tarafında devam ettiğinin bildirildiği yanıtlardır. Örneğin HTTP 100 yanıtı isteğin şu anda işlenmekte olduğunun bildirildiği yanıttır. Bu yanıt tarayıcıya iletilir ancak kullanıcı ekranına yansıtılmaz.
  • 2xx (200 Kodlu Yanıtlar): 2xx HTTP Durum kodları, tarayıcıdan sayfaya yönelik sunucuya gönderilen işlemin başarılı olduğunun bildirildiği yanıtlardır. HTTP 2xx kodlu yanıtlarda sunucunun tarayıcıdan gelen isteğe başarılı yanıt verdiği ve sayfanın açılabilir olduğu bildirilir. Örneğin http 200 “OK” kodlu yanıtlarda sayfa istek sonrasında kullanıcı tarayıcısında net şekilde görülebilir.
  • 3xx (300 Kodlu Yanıtlar): 3xx HTTP durum kodları, tarayıcıdan web sayfasına yönelik sunucuya iletilen isteğin farklı bir sayfaya yönlendirildiğinin bildirildiği yanıtlardır. Yani 3xx durum kodlarına sahip sayfalara yönelik tarayıcıdan bir istek gönderildiğinde sunucu ilgili sayfanın farklı bir sayfaya yönlendirildiğini HTTP 3xx kodlu yanıtlar ile bildirir ve kullanıcıyı yeni sayfaya yönlendirir.
  • 4xx (400 Kodlu Yanıtlar): 4xx HTTP durum kodları, kullanıcı kaynaklı bir hatanın gerçekleştiğinin bildirildiği yanıtlardır. Yani HTTP 4xx hata kodlu bir yanıt tarayıcıya gönderildiğinde burada hatanın kaynağının client yani kullanıcı olduğu bildirilir. Ancak burada ki kullanıcı salt tarayıcıdan isteği gönderen kişi olarak algılanmamalıdır. Web sayfasını barındıran sitede uygulanan herhangi bir işlem sonrasında 4xx HTTP hata kodları ortaya çıkabilir.
  • 5xx (500 Kodlu Yanıtlar): 5xx HTTP durum kodları, tarayıcıdan gönderilen istek sırasında sunucu kaynaklı bir hatanın ortaya çıktığının iletildiği yanıtlardır.

HTTP yanıt (durum) kodları ile alakalı daha detaylı bilgi almak için bu konuya özel yazılmış içeriğimizi ziyaret edebilirsiniz.

HTTP Yanıt Başlıkları

HTTP yanıt başlıkları, HTTP istek başlıklarında olduğu gibi HTTP başlık standartlarını takip eden ve HTTP isteklerine verilen sunucu yanıtları ile alakalı bilgileri içeren başlıklardır. HTTP isteğini gönderen istemci (user-agent) sunucudan alınan HTTP yanıtına ve yanıt başlıklarına göre gelen dataları işler ve kullanıcıya aktarır.

HTTP response header örneği
Chrome tarayıcı HTTP response header örneği

Üstteki görselde Chrome tarayıcısının network bölümünden alınan örnek yanıt başlıklarını görebilirsiniz.

HTTP yanıt başlıkları bölümleri
HTTP yanıt başlıkları bölümleri Image-Source: developer-mozilla.org

Üst bölümde HTTP istek başlıklarında değindiğimiz gibi HTTP yanıt başlıklarında da kullanılan başlıkların tamamı yanıt ile doğrudan bağlantılı değildir. HTTP yanıt başlıklarında yanıt ile doğrudan bağlantılı olan başlıkların dışında kullanılan, görüntülenebilecek farklı başlıklarda vardır.

Bu başlıklar bir kaç gruba ayrılır ;

  • Genel (General): Yanıttan bağımsız, HTTP bağlantısı ile alakalı genel bilgileri içeren başlıklardır.
  • Yanıt Başlıkları: HTTP yanıtı ve sunucu ile alakalı doğrudan bilgileri içeren başlıklardır. Örn: Vary, Accept-ranges vb.
  • Temsil Başlıkları: Aktarılan HTTP mesajları ile alakalı dataların, bilgilerin belirtildiği başlıklardır.

Üstteki renklendirilmiş örnek HTTP yanıt başlıkları görselinde görebileceğiniz gibi örnek bir HTTP yanıtında doğrudan HTTP yanıtı ve sunucu ile alakalı başlıklara ek olarak gerçekleştirilen HTTP bağlantısı ve mesajlar ile alakalı bilgileri içeren genel ve temsili çok sayıda başlıkta mevcuttur.

HTTP Yanıt Başlıkları Nasıl Görüntülenir?

HTTP istek başlıklarının görüntülenmesi metodu ile birebir aynı olacak şekilde internet tarayıcılarının developer tools bölümlerinde yer alan network (ağ) alanı kullanılarak HTTP yanıt başlıkları görüntülenebilir.

Bunun için Chrome yada Firefox aracında sırasıyla ;

  • İstek gönderilecek sayfa açıldıktan sonra F12’ye basın
  • Daha sonra açılan ekranda network bölümüne tıklayın
  • Açılan network alanı içerisinde tümü (all) kısmına tıklayın
  • En son açılan tümü (all) bölümünde de sunucudan döndürülen yanıtı (genellikle HTML) seçerek HTTP yanıt başlıklarına bakabilirsiniz.

HTTP Yanıt Gövdesi

HTTP yanıtlarının final bölümü HTTP Body yani HTTP yanıt gövdesidir. HTTP isteklerinde olduğu gibi HTTP yanıtlarında da tüm yanıtlar HTTP gövdesine sahip olmak zorunda değildir. Gönderilen HTTP isteklerine karşılık olarak herhangi bir yükleme yapılması gerekmeyen yanıt durumlarında genellikle HTTP gövdesi gönderilmez. Bu tarz yanıtlara örnek olarak (HTTP 201 Created) verilebilir.

HTTP Nasıl Çalışır ? Klasik HTTP Akışı

İstemci, son sunucu veya ana sunucu gibi çalışan ara (proxy) gibi bir sunucuyla iletişim kurmak istediğinde aşağıdaki tipik HTTP adımları gerçekleştirir.

1 -TCP Bağlantısı

HTTP akışının ilk adımı istemci ile sunucu arasında bir TCP bağlantısının kurulmasıdır. TCP bağlantısı ile istemcinin sunucuya istek, sunucunun da istemciye yanıt gönderebilmesi ve data alışverişinin gerçekleşebilmesi sağlanır. İstemci birden fazla TCP bağlantısı kurabilir, tek bir TCP bağlantısı üzerinden veri alışveriş gerçekleştirebilir. İstemci server iletişiminde kullanılan HTTP versiyonuna göre TCP bağlantı sayı ve ihtiyacı değişiklik gösterir.

2 – HTTP İstek Mesajı

TCP bağlantısı sonrası gerçekleşen diğer bir adım da istemciden sunucuya HTTP istek mesajının aktarılmasıdır. İstemci, sunucu tarafında gerçekleştirmek istediği aksiyona yönelik HTTP mesajını sunucuya aktarır.

GET /dns-nedir/ HTTP/1.1
Host: www.dijitalzade.com
Scheme: https
User-Agent: Chrome Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive


Üstteki gibi bir HTTP isteği örneğinde ilk satır “request line” yani istek satırıdır. Burada isteğin amacını belirten GET methodu, erişilmek istenilen URL’nin yolu (path) /dns-nedir/ ve bağlantıda kullanılacak HTTP versiyonu HTTP/ 1.1 belirtilmiştir.

İstek satırının devamında gelen HTTP başlıklarında istek ve bağlantı ile alakalı detaylar yer almaktadır. Örneğin Scheme başlığında kullanılan https ifadesi ile HTTP bağlantısının secure protokol yani güvenli versiyon üzerinden gerçekleşeceği belirtilmektedir.

Altında gelen Accept-Encoding bölümünde gönderilen HTTP isteğine verilecek yanıtlarda hangi sıkıştırma methodlarının istemci tarafından desteklendiği (destekleneceği) aktarılmaktadır. Üstteki örnek için burada gzip, deflate ve br belirtilmiştir. Gelen bu istek başlığına uygun olarak sunucu, 3 sıkıştırma methodundan herhangi biri ile sıkıştırılmış bir kaynağı yanıt olarak döndürebilir.

3 – HTTP Yanıt Mesajı

HTTP bağlantısının istek aşamasında sunucuya iletilen HTTP isteği mesajı sonrası sunucu, ilgili istekte yer alan HTTP bilgilerini işler ve isteğe uygun yanıtı istemciye döndürür.

Üstteki örnek HTTP isteğine yanıt olarak sunucu aşağıdaki örnekteki gibi bir yanıtı istemciye döndürür.

 HTTP/1.1 200 OK
Date: Sat, 01 Feb 2022 14:38:22 GMT
Server: Nginx
Last-Modified: Tue, 01 Jan 2022 21:58:32 GMT
ETag: "43214ad3-1568-555a123b2791c"
Accept-Ranges: bytes
Content-Length: 39769
Content-Type: text/html

HTTP Yanıt başlıklarının altında 39769 byte'lık HTML dokümanı (Content) gönderilir.

Üstteki HTTP isteğine yanıt olarak sunucudan bu örnekteki gibi bir HTTP yanıtı döndürülebilir. Bu HTTP yanıtı örneğinin en üstünde bulunan bölüm HTTP istek satırının sunucu tarafındaki karşılığı olan HTTP yanıt satırıdır. HTTP yanıt satırının ilk kısmında HTTP/ 1.1 bilgisi ile yanıtın HTTP/1.1 versiyonu üzerinden verildiği bilgisi aktarılır. Devamında gelen 200 ve OK mesajları ile HTTP yanıtının durum kodu ve isteğin başarılı şekilde işlendiği bilgisi OK mesajı ile aktarılır.

Yanıt satırının devamında gelen HTTP başlıklarında da yanıt, önbellekleme ve server ile alakalı detaylar yer almaktadır. Örneğin yanıt satırının hemen altında Server: başlığında belirtilen Nginx, yanıtın döndürüldüğü ana sunucu yada ara sunucunun (proxy) web server tipini belirtir. Date: bölümünde isteğe yanıtın döndürüldüğü tarih, saat bilgisi iletilir.

4 – Devam Eden HTTP İstekleri ve Yanıtlar

İlk TCP bağlantısı sonrası iletilen HTTP isteği ve alınan HTTP yanıtı sonrası TCP bağlantısı sonlandırılabilir yada bağlantı devam edebilir. Burada temel faktör HTTP isteğine bağlı olarak iletilen yanıtta gönderilen kaynak sonrası istemcinin farklı kaynaklara ihtiyaç duyup duymamasıdır.

HTTP yanıtı olarak iletilen herhangi bir kaynak sonrası, istemci kaynak içerisinden farklı bir kaynağa ihtiyaç duyarsa yada sunucudan başka bir kaynağa ulaşmak için istek iletirse (iletmek isterse) TCP bağlantısı devam eder veya yeni TCP bağlantısı kurulur.

HTTP/2 öncesi versiyonlarda her istek için ayrı ayrı TCP bağlantısı kurulması gerektiğinden ve bir bağlantı sonlanmadan ikinci TCP bağlantısı ile ikinci kaynağın isteği gönderilemediğinden HTTP pipelining tarzı teknikler ile kaynak aktarımı noktasında yaşanan tıkanıklık aşılmaya çalışılmaktaydı (aşılmaktadır). Ancak HTTP/ 2 versiyonu ile birlikte gelen multiplexing teknolojisi ile tek TCP bağlantısı kullanılarak birden çok isteğin gönderilip yanıtlanması sağlandığından HTTP/2 ve sonraki versiyonlarda veri alışveriş hızı artışı ve işlem kolaylığı sağlanmıştır.

HTTPS (HTTP Secure) Nedir?

HTTPS (HTTP Secure –  Güvenli hiper metin aktarım iletişim protokolü), Sunucu – istemci veri alışverişinde aktif protokol olarak kullanılan HTTP’nin güvenli, şifrelenmiş versiyonuna (uzantısına) verilen isimdir. HTTPS ile iletişim katmanı protokolü, TLS veya onun öncülü SSL ile şifrelenerek korunur. Bu sayede HTTPS protokolü üzerinden gönderilen istemci, sunucu verileri şifrelenerek olası sızmalardan, saldırılardan korunur.

HTTP(S) ile istemci ve sunucu arasındaki iletişimde aktarılan veriler çift yönlü şifreleme ile korunur.  HTTPS protokolü kullanılan sitelerde, site URL adreslerinde schema olarak HTTPS kullanılır ve URL adresleri https:// ile başlar.

HTTPS protokolü kullanılmayan: http://www.dijitalzade.com

https protokolü kullanılan: https://www.dijitalzade.com

Günümüzde pek çok web tarayıcısında HTTPS protokolü kullanılmayan web sitelerine giriş yapıldığında tarayıcı, sitenin güvenlik protokolleri ile alakalı uyarı vermektedir.

Oskay Günaçar

Oskay Günaçar, Teknik SEO uzmanı ve Dijitalzade SEO & Dijital Pazarlama bloğunun kurucusudur. Front-end programlama, Python, semantic SEO, teknik SEO, Google patentleri ve Google search başlıca ilgili alanlarıdır. 5 yıldan fazla SEO deneyimi ile İKİLER, Webtures, Boosmart ve Storyly.io şirketlerinde SEO uzmanı pozisyonlarında görev almış ve outsource uzman olarak çok sayıda projeye dahil olmuştur. Sektör içerisinde çalıştığı çok sayıda başarılı, büyük web sitesinin yönetim ve geliştirme (SEO) süreçlerinden elde ettiği uzmanlık ve deneyimleri paylaşmayı amaçladığı Dijitalzade web sitesi üzerinden doğru ve kaliteli bilginin kolay ulaşılabilir olması amacıyla içerik üretmektedir.

Bir yanıt yazın

Başa dön tuşu