5 Mart 2015 Perşembe

Bir HTTP response mesajının anatomisi.

HTTP/1.1 200 OK
Date: Sun, 10 Oct 2010 23:26:07 GMT
Server: Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g
Last-Modified: Sun, 26 Sep 2010 22:04:35 GMT
ETag: "45b6-834-49130cc1182c0"
Accept-Ranges: bytes
Content-Length: 13
Connection: close
Content-Type: text/html

<!doctype html>
<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

Yukarıdaki mesaj örnek bir HTTP response mesajıdır.
Bu mesajı satır satır inceleyelim.

Status line

HTTP/1.1 200 OK

1. satırda status line'ı görüyoruz.
Server bize HTTP/1.1 versiyonu kullandığını belirtiyor.
200 status code ve OK reason phrase ile işlemin başarılı olduğunu anlıyoruz.
Yani server isteğimize gerektiği gibi yanıt verebildiğini söylüyor "no problem".

Date

Date: Sun, 10 Oct 2010 23:26:07 GMT

2. satırda Date: headerı ile tarih bilgisi gelmiş. Server gönderdiği mesajları daima tarih ve saat bilgisi ile işaretler. 
Bu yüzden Date headerı "General header" yani genel başlıklar kategorisine girer.

Server

Server: Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g

3. satırda Server: headerı ile server bize kendini tanıtıyor. 
Bu bilgiler Apache versiyon 2.2.8 olduğu, Ubuntu işletim sistemi üzerinde çalıştığı ve OpenSSL 0.9.8g kullandığı şeklinde.

Last-Modified

Last-Modified: Sun, 26 Sep 2010 22:04:35 GMT

4. satırda Last-Modified headerı ile istediğimiz dokumanın en son ne zaman değiştirildiğini öğreniyoruz. Yani bu tarihtan beri istekte bulunduğumuz web sayfasına hiç müdahale edilmemiş.
Burada server bir nevi sayfanın güncelliğinden bizi haberdar ediyor. 
Bu header genellikle en son baktığımızdan bu yana sayfada bir değişiklik olup olmadığını öğrenmemizi sağlar. Eğer değişmediyse tekrar aynı sayfayı serverdan almamıza gerek yok demektir.

ETag

ETag: "45b6-834-49130cc1182c0"

5. satırda ETag headerı ile istediğimiz sayfaya bir "entity tag" veriyor. Daha sonra karşılaştırmak istersek diye.

Accept-ranges

Accept-Ranges: bytes

6.satırda Accept-ranges headerı ile serverın partial content isteklerini byte range şeklinde kabul ettiğini bildiriyor. Eğer Accept-range: none olsaydı serverın partial content isteklerini kabul etmediği anlamına gelirdi.

Content-length

Content-Length: 13

7. satırda Content-length headerı ile içeriğin boyutunu öğreniyoruz. Bu mesajın içeriği 13 bitmiş.
İçerikle ilgili olduğundan bu header "content headers" yani içerik başlıkları kategorisine giriyor.

Connection

Connection: close

8. satırda Connection headerı ile bize bağlantı durumunu bildiriyor. Yani server işlem tamamlandığından tcp bağlantısını (serverdaki soketi) artık kapattığını haber veriyor.

Content-type

Content-Type: text/html

9.satırda Content-type headerı ile server gönderdiği içeriğin tipini belirtiyor. Burada bir web sayfası istediğimizden tip text/html olarak belirtilmiş.

Empty-line / Boş satır

10.satırda boş bir satır konulduğunu görüyoruz. Mesaj gövdesi yani body den hemen önce boş bir satır konulur. Bu satır CR ve LF den oluşur.
Bu satırdan itibaren mesaj gövdesi yani serverdan istediğimiz içeriğin geldiğini haber verir.

Message body / Mesaj gövdesi

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

11. satır ve devamında bir html içeriği olduğunu görüyoruz.
Serverdan istemiş olduğumuz web sayfası bize mesaj gövdesi içinde html kodları olarak gönderilmiş.


...

Böylece örnek bir HTTP response mesajının nelerden oluştuğunu, ve aslında her bulunduğumuz istekte bize server tarafından sayfa içeriğine ek olarak bir çok bilgi gönderildiğini de gözlemlemiş olduk.


Hiç yorum yok:

Yorum Gönder