Host HTTP header

При request от стрна на брауза към даден хост, например www.alabala.com, браузът, като клиент, добавя и request header Host, съдържащ името на желаният домейн, понеже на даден сърв може да има N на брой виртуални хоста. Например:

Host: www.alabala.com

Идеята на този хедър е даденият сърв да знае кой точно домейн да обслужи.

В какъв смисъл?

В смисъл, че DNS системата ще превърне това www.alabala.com в IP адрес за да свърже брауза със сърва. Но сървът ще получи един HTTP рекуест и понеже сървът обикновено хоства много сайтове (виртуални хостове), няма да знае за кой точно от тях е даденият рекуест.

Ето затова е този хедър, за да кажеш на сърва кой точно домейн искаш.

Не е ли само DNS достатъчен?
Не е, работата на DNS е да обърне www.alabala.com в IP адрес за да може клиентът чисто от мрежова гледна точка да намери сърва, да си изпрати TCP пакетите с рекуеста и да получи респонса…

When multiple websites or applications are hosted on one server, this is known as virtual hosting. The server has a single IP address in this scenario, and received requests are routed to the relevant domains.

Given that websites and applications don’t have their own personal IP addresses, the purpose of the host header is to provide the server with information about the proper recipient of the request located downstream.

Да се свържеш с даден домейн с помощта на DNS значи да се свържеш по IP с даденият сърв, но ти се свързваш със сърва чисто на мрежово ниво, не знаеш на този сърв кой точно домейн ти трябва. Все едно да се стовариш с куфара на дадена гара и да не знаеш на кой точно адрес да отидеш.
Не е задължително всеки сайт да има собствен IP адрес.

Литература

https://crashtest-security.com/invalid-host-header/

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *