在HTTP“主机”头参数中是否需要端口号?

说我做了一个HTTP请求: foosite.com但实际发送请求的端口是6103,我不把这个端口放在Host头,例如:

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

那么http服务器应该认识到我正试图在端口6103上与它交谈? 或者,因为它在请求头被省略,我赌博,如果服务器实际上认识到这一点?

我问这个问题说:我发现浏览器,至lessfirefox + chrome,把端口int的Host头。 但是我正在使用的Java应用程序没有。 而当端口没有通过Host服务器回应思考我在80端口。那么我需要獾谁? 服务器运营商,还是Java程序员?

请参阅HTTP规范第14.23节,该规范指定如果端口#不是默认端口80,则应该包含端口#。

浏览器(和curl)只会在端口不是标准端口的情况下添加端口,正如HTTP规范所要求的,并在@ superfell的答案中所述 。

浏览器今天(2013),实际上将端口从标题(端口80)时脱离主机头。 一些使用自己的方法的客户,比如百度蜘蛛, 即使端口是80 ,也包括端口号 。

这是否正确,我不知道。 规范并没有说明当使用的端口是默认端口时是否包含端口号。

要回答你的评论 ,服务器将做他们需要做的任何事情来遵守这个规范,规范只build议在需要的情况下。 正因为如此,我觉得这不是服务器如何处理它的问题 – 更多的是客户端发出请求的方式:在主机头中包含端口号。