O número da porta é necessário no parâmetro de header “host” de HTTP?

Digamos que eu faça uma solicitação HTTP para: foosite.com mas a porta na qual eu realmente envio a solicitação é 6103 e NÃO coloco essa porta no header do Host por exemplo:

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

O servidor http deve reconhecer que estou tentando falar com ele na porta 6103? Ou, já que foi omitido no header da solicitação, estou apostando se o servidor realmente reconhece isso?

Faço essa pergunta para dizer isso: descobri que os navegadores, pelo menos o firefox + chrome, colocam a porta no header do Host . Mas o aplicativo Java que estou usando não. E quando a porta não é passada no Host o servidor responde pensando que estou na porta 80. Então, quem eu preciso para texugo? O operador do servidor ou o programador Java?

Consulte a seção 14.23 da especificação HTTP, que especifica que o número da porta deve ser incluído se não for a porta padrão de 80.

ATUALIZADO para navegadores modernos:

Os navegadores (e curvas) adicionarão a porta somente quando não for a porta padrão, conforme exigido pela especificação HTTP e anotado na resposta da @ superfell.

Navegadores neste dia (2013), na verdade, irão retirar a porta do Cabeçalho do Host quando a porta for o padrão (porta http 80, porta https 443). Alguns clientes, que usam seu próprio método, como o Baidu Spider, incluem o número da porta mesmo quando a porta é 80 .

Se isso é apropriado ou não, não sei. A especificação não diz se está tudo bem ou não include o número da porta quando a porta usada é o padrão.

Para responder ao seu comentário , os servidores farão o que for necessário para cumprir as especificações, e a especificação sugere apenas os casos QUANDO for necessário. Por causa disso, sinto que não é realmente uma questão de como o servidor lida com isso – é mais como o cliente emite a solicitação: inclui o número da porta no header do host ou não.