当前位置:  开发笔记 > 前端 > 正文

HTTP"主机"标头参数中是否需要端口号?

如何解决《HTTP"主机"标头参数中是否需要端口号?》经验,为你挑选了2个好方法。

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

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

应该http服务器然后识别我正试图在端口6103上与它通话?或者因为它在请求标题中被省略了我在赌博,如果服务器实际上认识到这一点?

我问这个问题:我发现浏览器,至少是firefox + chrome,把端口放在Host头部.但我正在使用的Java应用程序没有.当端口没有通过时,Host服务器会回复以为我在端口80上.所以我需要獾?服务器操作员还是Java程序员?



1> superfell..:

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


@superfell你的意思是必须而不是应该对吗?
是的,我也在RFC中阅读过.我可能应该注意到这一点.我希望有人能够说出具体的知识,特别是知道某些Web服务器和Web应用程序框架如何对这种请求作出反应,例如:"某些Web服务器/应用程序框架处理它,但X和Y不处理"等等最终我希望接受RFC所说的内容,但我可能会在我放弃之前一天提出这个问题.
应该澄清的是,RFC说明它是否不是协议的默认端口。并举例说明HTTP是否应为80。如果其HTTPS为默认值,则默认值为443(即,在HTTPS请求中,可能不包含443端口)。

2> Gaia..:

更新为现代浏览器:

浏览器(和curl)将仅在不是标准端口时添加端口,这是HTTP规范所要求的,并在@ superfell的答案中注明.

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

不管这是否合适,我不知道.当使用的端口是默认端口时,规范没有说明是否可以包含端口号.

为了回答您的评论,服务器将做他们需要做的任何事情以符合规范,并且规范仅建议在需要时的情况.因此,我觉得这不是服务器如何处理它的问题 - 更多的是客户端发出请求的方式:包括主机头中的端口号,或不.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有