Python - HTTP Başlıkları
İstemci ve sunucu arasındaki istek ve yanıt, mesajdaki başlık ve gövdeyi içerir. Başlıklar, TCP bağlantısı üzerinden gönderilen işlenmemiş iletinin başında görünen protokole özgü bilgileri içerir. Mesajın gövdesi, başlıklardan boş bir satır kullanılarak ayrılır.
Üstbilgi Örneği
Http yanıtındaki başlıklar aşağıdaki türlere ayrılabilir. Aşağıda başlığın bir açıklaması ve bir örnek bulunmaktadır.
Önbellek Kontrolü
Cache-Control genel başlık alanı, tüm önbelleğe alma sistemi tarafından uyulması GEREKEN yönergeleri belirtmek için kullanılır. Sözdizimi aşağıdaki gibidir:
Cache-Control : cache-request-directive|cache-response-directive
Bir HTTP istemcisi veya sunucusu, Cache-controlönbellek için parametreleri belirtmek veya önbellekten belirli türdeki belgeleri talep etmek için genel başlık. Önbelleğe alma yönergeleri virgülle ayrılmış bir listede belirtilir. Örneğin:
Cache-control: no-cache
Bağ
Bağlantı genel-üstbilgi alanı, gönderenin söz konusu bağlantı için istenen seçenekleri belirlemesine olanak tanır ve diğer bağlantılar üzerinden proxy'ler tarafından iletilmemelidir. Bağlantı başlığını kullanmak için basit sözdizimi aşağıdadır:
Connection : "Connection"
HTTP / 1.1, gönderenin yanıtın tamamlanmasının ardından bağlantının kapatılacağını bildirmesi için "kapat" bağlantı seçeneğini tanımlar. Örneğin:
Connection: close
Varsayılan olarak, HTTP 1.1, bağlantının bir işlemden sonra otomatik olarak kapanmadığı kalıcı bağlantılar kullanır. Öte yandan HTTP 1.0, varsayılan olarak kalıcı bağlantılara sahip değildir. 1.0 istemcisi kalıcı bağlantılar kullanmak isterse,keep-alive aşağıdaki gibi parametre:
Connection: keep-alive
Tarih
Tüm HTTP tarih / saat damgaları, istisnasız Greenwich Ortalama Zamanında (GMT) gösterilmelidir ZORUNLU. HTTP uygulamalarının, tarih / saat damgalarının aşağıdaki üç temsilinden herhangi birini kullanmasına izin verilir:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer Kodlama
Transferi-Encoding genel başlık alanı dönüşümün tipi güvenle amacıyla ileti gövdesine uygulanan gönderen ve alıcı arasında transfer olmuştur belirtir. Bu içerik kodlamayla aynı değildir çünkü transfer kodlamaları varlık gövdesinin değil mesajın bir özelliğidir. Transfer-Encoding başlık alanının sözdizimi aşağıdaki gibidir:
Transfer-Encoding: chunked
Tüm aktarım kodlama değerleri büyük / küçük harf duyarlıdır.
Yükselt
Yükseltme genel başlığı istemci ne desteklediği ek haberleşme protokolleri belirtmek için ve sunucu bulur o anahtar protokollerine uygun olması halinde kullanmak istiyorum izin verir. Örneğin:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Yükseltme başlığı alanı, HTTP / 1.1'den başka bir uyumsuz protokole geçiş için basit bir mekanizma sağlamayı amaçlamaktadır.
Üzerinden
Via genel başlık ara protokolleri ve alıcıları belirtmek için geçitleri ve vekiller tarafından kullanılabilir. Örneğin, HTTP / 1.0 kullanıcı aracısından, isteği nowhere.com'daki genel bir proxy'ye iletmek için HTTP / 1.1 kullanan dahili bir proxy kodu adı verilen "fred" e bir istek mesajı gönderilebilir ve bu da isteği şu şekilde tamamlar: bunu www.ics.uci.edu adresindeki kaynak sunucuya iletmek. Www.ics.uci.edu tarafından alınan istekte şu Via başlık alanı olacaktır:
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Yükseltme başlığı alanı, HTTP / 1.1'den başka bir uyumsuz protokole geçiş için basit bir mekanizma sağlamayı amaçlamaktadır.
Uyarı
Uyarı genel başlık mesajının yansıtılması olmayabilir, bir mesajın durumu ya da dönüştürme hakkında ilave bilgi taşımak için kullanılır. Bir yanıt birden fazla Uyarı başlığı taşıyabilir.
Warning : warn-code SP warn-agent SP warn-text SP warn-date
Misal
Aşağıdaki örnekte urlopen kullanarak yanıt almak için urllib2 modülünü kullanıyoruz. Daha sonra, bu yanıt için başlık bilgilerini almak için info () yöntemini uygularız.
import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close