HTTP / İstekler

Bir HTTP istemcisi sunucuya aşakğıdaki mesaj şeklini kullanarak bir istek yollar.

  • İstek satırı (A Request-line)
  • Sıfır veya daha fazla başlık (Genel | İstek | Varlık) bilgisi gönderir. Bitirmek için CRLF karakterleri kullanılır. (Zero or more header (General|Request|Entity) fields followed by CRLF)
  • Boş bir satır, bu satırı oluşturmak için CRLF karakterleri kullanılır (An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields)
  • İsteğe bağlı olarak mesaj gövdesi (Optionally a message-bod)

Aşağıda her birinin açıklamasını bulabilirsiniz.

İstek-Satırı

İstek satırı isteğin iletileceği metodu belirleyen parça ile başlar ve URI ile devam eder, daha sonra protokol versiyonu ve CRLF karakterleri ile biter. Bütün parçalar SP (boşluk) karakteri ile birbirinden ayrılır.

İstek-satırı = Metod SP İstek-URI SP HTTP-Versiyon CRLF

Request Method

İstek metodu istek-URI ile belirtilen kaynak üzerinde uygulanacak olan işlemdir. Metod büyük/küçük harf duyarlı ve her zaman büyük harflarle belirtilmelidir. Aşağıda desteklenen bütün metodları bulabilirsiniz.

GETGET metodu sadece URI ile verilen kaynak üzerinden veri taşınması/getirilmesi için kullanılır. Kaynek üzerinde başka bir etkisi yoktur.
HEADGET metodu ile aynı işe yarar ama sadece başlıkları ve durum satırını getirir
POSTPOST metodu sunucuya bilgi göndermek amacıyla kullanılır. Örnek olarak bir form içindeki müşteri bilgileri ya da upload edilen bir dosya içeriği verilebilir.
PUTSunucu tarafında bulunan ve URI ile belirtilen bütün veriyi yeni gönderilen veri ile değiştirmesi amacıyla kullanılır. Yani veriyi tamamen güncellemek için kullanılabilir.
DELETEURI ile verilen kaynağı silmek için kullanılır.
CONNECTİstemciden URI ile belirtilen kaynağa bir bağlantı tüneli hazırlamak için kullanılır.
OPTIONSHedef kaynağa ulaşım için gereken bağlantı bilgilerini belirlemek için kullanılır.
TRACEVerilen hedef kaynak ile loop back test uygulamak için kullanılır.

İstek-URI

Genel açılımı Uniform Resource Identifier olup, gönderilecek istek üzerinde hangi kaynağa istek gönderildiğini belirlemek için kullanılan bir metindir. Kullanımı aşağıdaki gibidir.

istek-URI = “*” | tam URI | kaynak_yolu | yetki

*Bu karakter gönderilen istek belirli bir kaynağa değil, sunucunun kendisine uygulanacağını belirtmek için kullanılır. Sadece 
tam URIBu method, gönderilen istek bir vekil (proxy)’e uygulanırken kullanılır. Bu vekil de gönderilen istek veya servisi hazırda tanımlanmış olan uygun bir adrese yönlendirir ve o adresden gelen cevabı yansıtır. Örneğin GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
En bilinen ve kullanılan Istek-URI biçimi sunucu üzerinde bulunan bir kaynağı (dosya/resim/..) belirlemek için kullanılır. Örneğin, bir sunucudan kaynak çekmek isteyen bir istemci uygulaması 80 portu üzerinden TCP bağlantısı açmalı. Bu bağlantıyı açarken sunucu olarak www.w3c.org kullanmalı ve bu bağlantı üzerinden aşağıdaki satırı yollamalı. GET /pub/WWW/TheProject.html HTTP/1.1 Unutulmaması gereken tam URI yani “/pub…” hiçbir zaman boş olmamalı. Şayet ana klasör seçilecekse “/” karakteri verilmeli.

İstek Başlık Alanları

Genel başlıkları ve Varlık başlıkları kısımlarını ayrı bölümler halinde ilerleyen bölümlerde inceleyeceğiz. Şimdilik, istek-başlık-alanları (request-header-fields) kabramlarına bakalım.

İstek başlık alanlarını kullanarak bir istemci tarafından sunucu tarafına fazladan bilgi göndermek için kullanabiliriz. Bu başlık içinde gönderilen isteğin bilgileri ve isteği gönderen istemcinin bilgileri istenildiği takdirde sunucuya gönderilebilir. Bu alanlar isteğin niteleyicileri olarak düşünülebilir. Aşağıda önemli istek başlıklarını görebilirsiniz.

  • ccept-Charset
  • Accept-Encoding
  • Accept-Language
  • Authorization
  • Expect
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Max-Forwards
  • Proxy-Authorization
  • Range
  • Referer
  • TE
  • User-Agent

Kendi istemci ve sunucunuzu kendiniz yazacaksanız, kendi belirlediğiniz alanları da ekleyebilirsiniz.