Czy numer portu jest wymagany w parametrze nagłówka HTTP "Host"?

Powiedzmy, że wykonuję żądanie HTTP na: foosite.com ale port, na który faktycznie wysyłam żądanie, to 6103 i nie umieszczam tego portu w nagłówku Host na przykład:

GET /barpage HTTP/1.1
Host: foosite.com
Method: GET

Czy serwer http powinien rozpoznać, że próbuję z nim rozmawiać na porcie 6103? Czy skoro został pominięty w nagłówku żądania, to czy serwer rzeczywiście to rozpozna?

Zadaję to pytanie, aby powiedzieć tak: znalazłem, że przeglądarki, przynajmniej firefox + chrome, umieścić port int Header Host. Ale Aplikacja Java, której używam, nie. A gdy port nie jest przekazywany w Host serwer odpowiada myśląc, że jestem na porcie 80. Więc kogo potrzebuję do borsuku? Operator serwera czy programista Java?

Author: Jon Mabe, 2010-07-29

2 answers

Patrz sekcja 14.23 specyfikacji HTTP, która określa, że port # powinien być dołączony, jeśli nie jest to domyślny port 80.

 47
Author: superfell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-29 15:53:48

Aktualizacja dla współczesnych przeglądarek:

Przeglądarki (i curl) dodają port tylko wtedy, gdy nie jest on standardowym portem, zgodnie z wymaganiami specyfikacji HTTP i zaznaczonymi w odpowiedzi @superfell .

Przeglądarki tego dnia (2013), faktycznie usunie port z nagłówka hosta, gdy port jest standardem (port http 80, Port https 443). Niektóre klienty, które używają własnej metody, jak pająk Baidu, zawierają Numer portu nawet wtedy, gdy port jest 80.

Czy to jest właściwe czy Nie, Nie wiem. Specyfikacja nie mówi, czy podanie numeru portu jest w porządku, gdy używany port jest domyślny.

Aby odpowiedzieć na Twój komentarz , serwery zrobią wszystko, aby spełnić wymagania specyfikacji, a specyfikacja sugeruje tylko przypadki, gdy jest to potrzebne. Z tego powodu uważam, że nie chodzi o to, jak serwer sobie z tym radzi - chodzi raczej o to, jak klient wysyła żądanie: zawiera numer portu w nagłówku hosta, lub nie.

 6
Author: Gaia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-07 22:28:54