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.
GET | GET metodu sadece URI ile verilen kaynak üzerinden veri taşınması/getirilmesi için kullanılır. Kaynek üzerinde başka bir etkisi yoktur. |
HEAD | GET metodu ile aynı işe yarar ama sadece başlıkları ve durum satırını getirir |
POST | POST 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. |
PUT | Sunucu 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. |
DELETE | URI 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. |
OPTIONS | Hedef kaynağa ulaşım için gereken bağlantı bilgilerini belirlemek için kullanılır. |
TRACE | Verilen 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 URI | Bu 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.