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>