在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议在需要的情况下。 正因为如此,我觉得这不是服务器如何处理它的问题 – 更多的是客户端发出请求的方式:在主机头中包含端口号。