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

假设我向foosite.com发出HTTP请求,但实际发送请求的端口是6103,并且我不会将该端口放在Host标头中,例如:

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

那么http服务器是否应该认识到我正试图在端口6103上与它通话? 或者因为它在请求头文件中被省略了,我是否会在服务器实际识别它的情况下赌博?

我问这个问题说:我发现浏览器,至少firefox + chrome,将端口int放入Host头。 但是我正在使用的Java应用程序没有。 当端口没有通过Host ,服务器回应时认为我在端口80上。那么,我需要獾是谁? 服务器运营商,还是Java程序员?


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


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

浏览器今天(2013),当端口是标准端口(http端口80,https端口443)时,实际上会将端口从主机标头剥离 。 一些使用自己的方法的客户端,如百度蜘蛛,即使端口号为80,也包含端口号。

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

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

链接地址: http://www.djcxy.com/p/7293.html

上一篇: Is Port Number Required in HTTP "Host" Header Parameter?

下一篇: What is the difference between HTTP