HTTP - İstekler
Bir HTTP istemcisi, bir sunucuya aşağıdaki biçimi içeren bir istek mesajı biçiminde bir HTTP isteği gönderir:
- A Request-line
- Zero or more header (General|Request|Entity) fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
Aşağıdaki bölümler, bir HTTP istek mesajında kullanılan varlıkların her birini açıklamaktadır.
İstek Hattı
İstek Satırı bir yöntem belirteci ile başlar, ardından İstek-URI ve protokol sürümü gelir ve CRLF ile biter. Öğeler boşluk SP karakterleriyle ayrılır.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
İstek Satırında belirtilen her bir bölümü tartışalım.
Talep Yöntemi
Talep method verilen ile tanımlanan kaynak üzerinde gerçekleştirilecek yöntemi gösterir Request-URI. Yöntem büyük / küçük harfe duyarlıdır ve her zaman büyük harfle belirtilmelidir. Aşağıdaki tablo, HTTP / 1.1'de desteklenen tüm yöntemleri listeler.
SN | Yöntem ve Açıklama |
---|---|
1 | GET GET yöntemi, belirli bir URI kullanarak belirli bir sunucudan bilgi almak için kullanılır. GET kullanan istekler yalnızca verileri almalı ve veriler üzerinde başka bir etkisi olmamalıdır. |
2 | HEAD GET ile aynıdır, ancak yalnızca durum satırını ve başlık bölümünü aktarır. |
3 | POST POST isteği, HTML formları kullanılarak sunucuya müşteri bilgileri, dosya yükleme vb. Gibi veri göndermek için kullanılır. |
4 | PUT Hedef kaynağın tüm mevcut temsillerini yüklenen içerikle değiştirir. |
5 | DELETE URI tarafından verilen hedef kaynağın tüm mevcut temsillerini kaldırır. |
6 | CONNECT Belirli bir URI tarafından tanımlanan sunucuya bir tünel oluşturur. |
7 | OPTIONS Hedef kaynak için iletişim seçeneklerini açıklayın. |
8 | TRACE Hedef kaynağa giden yolla birlikte bir mesaj döngüsü geri testi gerçekleştirir. |
URI isteği
İstek-URI, bir Tekdüzen Kaynak Tanımlayıcısıdır ve talebin uygulanacağı kaynağı tanımlar. Aşağıda bir URI belirtmek için en sık kullanılan formlar verilmiştir:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | Yöntem ve Açıklama |
---|---|
1 | Yıldız işareti *HTTP isteği belirli bir kaynağa değil, sunucunun kendisine uygulandığında kullanılır ve yalnızca kullanılan yöntemin bir kaynak için geçerli olmaması durumunda izin verilir. Örneğin:
OPTIONS * HTTP/1.1 |
2 | absoluteURIbir proxy'ye HTTP isteği yapıldığında kullanılır. Vekilden, isteği veya hizmeti geçerli bir önbellekten iletmesi ve yanıtı döndürmesi istenir. Örneğin:
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | İstek URI'sinin en yaygın biçimi, bir kaynak sunucu veya ağ geçidindeki bir kaynağı tanımlamak için kullanılan biçimdir. Örneğin, kaynağı doğrudan kaynak sunucudan almak isteyen bir istemci, "www.w3.org" ana bilgisayarının 80 numaralı bağlantı noktasına bir TCP bağlantısı oluşturur ve aşağıdaki satırları gönderir:
GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org Mutlak yolun boş olamayacağını unutmayın; orijinal URI'de hiçbiri yoksa, "/" (sunucu kökü) olarak verilmelidir. |
Başlık Alanları İste
HTTP başlık alanlarını öğrenirken Genel-başlık ve Varlık-başlığını ayrı bir bölümde inceleyeceğiz. Şimdilik, İstek başlık alanlarının ne olduğunu kontrol edelim.
İstek başlığı alanları, istemcinin istek ve istemcinin kendisi hakkında ek bilgileri sunucuya iletmesine izin verir. Bu alanlar, istek değiştiriciler olarak işlev görür. Gereksinime göre kullanılabilecek bazı önemli İstek başlığı alanlarının listesi aşağıda verilmiştir:
Accept-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 özel İstemci ve Web Sunucunuzu yazmanız durumunda özel alanlarınızı tanıtabilirsiniz.
İstek Mesajı Örnekleri
Şimdi hepsini bir araya getirerek bir HTTP isteği oluşturalım hello.htm tutorialspoint.com üzerinde çalışan web sunucusundan sayfa
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Burada sunucuya herhangi bir istek verisi göndermiyoruz çünkü sunucudan düz bir HTML sayfası alıyoruz. Bağlantı bir genel başlıktır ve başlıkların geri kalanı istek başlıklarıdır. Aşağıdaki örnek, istek ileti gövdesi kullanılarak form verilerinin sunucuya nasıl gönderileceğini gösterir:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string
Burada verilen URL /cgi-bin/process.cgi , aktarılan verileri işlemek için kullanılacak ve buna göre bir yanıt döndürülecektir. Burayacontent-type sunucuya aktarılan verilerin basit bir web formu verisi olduğunu ve lengthmesaj gövdesine yerleştirilen verilerin gerçek uzunluğu olacaktır. Aşağıdaki örnek, düz XML'i web sunucunuza nasıl iletebileceğinizi gösterir:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://clearforest.com/">string</string>