Http ana bilgisayar başlığı nedir?


122

HTTP isteği gönderildiğinde TCP bağlantısının zaten kurulmuş olduğu göz önüne alındığında, IP adresi ve bağlantı noktası dolaylı olarak bilinir - bir TCP bağlantısı bir IP + Bağlantı Noktasıdır. Peki Hostbaşlığa neden ihtiyacımız var ? Bu, yalnızca TCP bağlantısında ima edilen IP adresiyle eşlenen birden çok ana bilgisayarın olduğu durumlarda mı gereklidir?

Yanıtlar:


143

hostBaşlık web sunucusu söyler sanal konak (ayarlanmışsa) kullanmak için. Birkaç takma ad (= etki alanları ve joker-etki alanları) kullanarak aynı sanal ana makineye bile sahip olabilirsiniz . Bu durumda, adreslenen farklı etki alanlarına göre farklı davranışlar sağlamak istiyorsanız, bu başlığı web uygulamanızda manuel olarak okuma olanağınız vardır. Bu mümkündür çünkü web sunucunuzda varsayılan ana bilgisayar olarak bir sankon kurabilirsiniz (ve yanılmıyorsam gerekir) . Bu varsayılan sankon, hostbaşlık herhangi bir yapılandırılmış sanal konaklarla eşleşmediğinde kullanılır .

Bunun anlamı: Doğru anladınız, ancak "birden çok ana bilgisayar" biraz yanıltıcı olabilir: Ana bilgisayar (adreslenen makine) aynıdır, IP adresine gerçekten çözümlenen şey, aynı zamanda atıfta bulunulan farklı alan adlarıdır (alt alanlar dahil) olarak ana bilgisayar adları (ama ana!).

Sorunun bir parçası olmasa da, eğlenceli bir gerçek: Bu belirtim, ilk günlerde SSL ile ilgili sorunlara yol açtı çünkü web sunucusunun, istemcinin adreslediği alana karşılık gelen sertifikayı teslim etmesi gerekiyordu. Ancak, hangi sertifikanın kullanılacağını bilmek için, web sunucusunun adreslenen ana bilgisayar adını önceden bilmesi gerekir. Ancak, istemci bu bilgiyi yalnızca şifrelenmiş kanal üzerinden gönderdiği için (yani: sertifika zaten gönderildikten sonra), sunucunun varsayılan ana bilgisayara göz attığınızı varsayması gerekiyordu. Bu, IP adresi / bağlantı noktası kombinasyonu başına bir SSL korumalı alan anlamına geliyordu.

Bu, Sunucu Adı Göstergesi ile aşılmıştır ; ancak, sunucu adı şimdi tekrar düz metin olarak aktarıldığı için bu yine bir miktar gizliliği bozar, böylece ortadaki her adam bağlanmaya çalıştığınız ana bilgisayar adını görebilir .

Web sunucusu ana bilgisayar adını Sunucu Adı Göstergesinden biliyor olsa da host, Sunucu Adı Göstergesi bilgileri yalnızca TLS el sıkışmasında kullanıldığından üstbilgi eski değildir. Güvenli olmayan bir bağlantıda, hiçbir Sunucu Adı Göstergesi yoktur, bu nedenle hostbaşlık hala geçerlidir (ve gereklidir).

Bir başka eğlenceli gerçek: Çoğu web sunucusu (hepsi değilse de) host, yalnızca varsayılan sankon yapılandırıldığı için ihmal edilse bile, tam olarak bir başlık içermiyorsa http-isteğinizi reddeder . Araçlarının en az bir HTTP (dinlemek daha) isteğinde gerekli bilgileri ilk içeren hattıdır METHOD RESOURCEve PROTOCOL VERSIONve en azından hostbu gibi bir -Üstbilgi:

GET /someresource.html HTTP/1.1
Host: www.example.com

In Ana bilgisayar Üstbilgi MDN Belgeleri böyle aslında ifade it:

Tüm HTTP / 1.1 istek mesajlarında bir Ana bilgisayar başlığı alanı gönderilmelidir. Bir Ana Bilgisayar başlık alanı olmayan veya birden fazla içeren herhangi bir HTTP / 1.1 istek mesajına 400 (Kötü İstek) durum kodu gönderilecektir.

Darrel Miller tarafından belirtildiği gibi, tüm teknik özellikler RFC7230'da bulunabilir .


iyi cevap. "Bu mümkündür, çünkü web sunucunuzda varsayılan ana bilgisayar olarak bir sankon kurabilirsiniz (ve yanılmıyorsam gerekir). Bu varsayılan sankon, ana bilgisayar başlığı yapılandırılmış sanalların hiçbiriyle eşleşmediğinde kullanılır. ana." RFC7230'u kontrol etmek istedim, ancak ifadenize vhostyakın olmayan 3 yakın virtual hostve defaultçoğunlukla limanla ilgili 12
kelimesi bulamadım

sadece ana bilgisayar hakkında: "Değilse, o zaman bir Ana bilgisayar üstbilgi alanı boş olmayan bir alan değeri ile sağlanırsa, yetki bileşeni Ana bilgisayar alanı değeriyle aynıdır." - aynı IMHO değil. Bunun üzerine RFC'yi göstermemi ister misiniz?
Alexei Martianov

pratik taraf: bazı sunuculara ana bilgisayar = alan adı başlığı ile POST gönderiyorum ve 200 (tamam), değiştirilen ana bilgisayar başlığını gönderiyorum ve 404 (bulunamadı) alıyorum. Sunucunun düzgün (tam olarak by the book) yapılandırılmadığı anlamına gelebilir mi?
Alexei Martianov

yorum düzenlenemediği için: defaultOtherwise, the authority component is assigned the default name configured for the server
2.'deki alıntı

garip. her 3 olaylar virtual hostbenim arama sonucunda bulunan tools.ietf.org/html/rfc7230 içindedir Appendix A. HTTP Version History. aramanız başka bir şey bulmuş gibi görünüyor.
Alexei Martianov

30

HTTP başlıklarının anlamını ve amacını anlamaya çalışırken her zaman yetkili kaynağa gitmenizi tavsiye ederim.

Bir istekteki "Ana Bilgisayar" üstbilgi alanı
, hedef URI'den ana bilgisayar ve bağlantı noktası bilgilerini sağlayarak, kaynak sunucunun tek bir IP adresinde
birden çok
ana bilgisayar adı için taleplere hizmet verirken kaynaklar arasında ayrım yapmasına olanak tanır .

https://tools.ietf.org/html/rfc7230#section-5.4

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.