Http web浏览器是否总是在域名后发送尾随斜杠?

Http web浏览器是否总是在域名后发送尾随斜杠?,http,browser,Http,Browser,浏览器如何向主机发送与尾部斜杠相关的url,是否存在一致性和/或标准 意思是,如果我输入http://example.com 在web浏览器的地址栏中,浏览器是否要添加尾部斜杠http://example.com/ 是否?就协议而言,http://example.com/something 和http://example.com/something/ 它们完全不同。如果以这种方式实现,某些服务器可能会将您从一个服务器重定向到另一个服务器 对于纯域名,它总是发送以斜杠结尾的请求。 正如Greg H

浏览器如何向主机发送与尾部斜杠相关的url,是否存在一致性和/或标准


意思是,如果我输入http://example.com 在web浏览器的地址栏中,浏览器是否要添加尾部斜杠http://example.com/ 是否?

就协议而言,http://example.com/something 和http://example.com/something/ 它们完全不同。如果以这种方式实现,某些服务器可能会将您从一个服务器重定向到另一个服务器

对于纯域名,它总是发送以斜杠结尾的请求。 正如Greg Hewgill和其他人所写,域名本身不包括在HTTP请求的路径部分中。但是,它包含在标题中


您可以使用Fiddler或WireShark等工具进行检查。

从浏览器发送到服务器的HTTP请求不包括域名,只包括从域名后第一个斜杠开始的路径部分。由于路径不能为空,因此在这种情况下会发送/

网站根目录的示例GET请求可能是:

GET / HTTP/1.0 上面的/不能省略。

请注意,当URL具有path元素时,这是一个问题:

http://example.com/dir
是不同于的URL

事实上,可能包含不同的内容,并具有不同的搜索引擎排名。

正如RFC 2616所述:

3.2.2 http URL

http方案用于定位 通过HTTP的网络资源 协议本节定义了 特定于方案的语法和 http URL的语义

http_URL=http://host[: 端口][abs_路径[?查询]]

如果端口为空或未给定, 假定为端口80。语义学 确定的资源是否为 位于正在侦听的服务器上 该端口上的TCP连接 主机的请求URI 参考第5.1.2节的abs_路径。 在URL中使用IP地址 应尽可能避免使用 参见RFC 1900[24]。如果 URL中不存在abs_路径,它 必须作为/当用作 请求资源节的URI 5.1.2. 如果代理收到的主机名不是完全限定的 域名,它可以添加自己的域名 指向它接收到的主机名。如果 代理收到完全合格的 域名,代理不得更改 主机名

阅读更多:

5.1.2请求URI ... 例如,希望检索 以上资源直接来自 源服务器将创建一个TCP 连接到主机的端口80 www.w3.org并发送以下信息:

   GET /pub/WWW/TheProject.html HTTP/1.1
   Host: www.w3.org
然后是剩余的 要求请注意,绝对路径 不能为空;如果没有出现在 必须提供原始URI 作为服务器根目录


阅读更多内容:

为了澄清这一点,域仅在主机头HTTP 1.1中发送。因此,您的意思是,即使您有一个空路径,URL也保证有一个尾随斜杠?@Hank:我的意思是,如果您有一个空路径,则会发送一个/。这并不是说后面的斜杠。如果路径部分不是空的,那么浏览器会发送URL栏上的内容,但服务器可能会在响应中选择重定向浏览器。很抱歉进行干预。换句话说:如果路径为空,浏览器将添加/。如果路径不为空,则如果添加了尾随的/,则由服务器添加。@jholster错误。见RFC 2616。这里有一句话,这是一个很好的观点。建议以/@Claudio作为url的结尾,请提供一些参考?@Yaggo:查看google的尾部斜杠url。对不起,我不记得有哪一个地方读过。我读过,但没有发现任何证据,只有个人观点。不带尾随斜杠的URI非常流行,单凭它并不能保证任何事情,而且我从未见过反对它们的基于事实的论点。当网络主要是静态文件时,在目录中添加/可能是事实上的标准,但我现在看不出有什么理由喜欢这样。在今天的网络中,“目录”的概念是模糊的。省略尾随斜杠并不会强制服务器进行额外的检查。URI不一定反映文件层次结构或与文件有关。我认为你的观点是关于统计文件,而我谈论的是一般的web应用程序。这是不正确的/某物/与HTTP意义上的某物/不同。
   GET /pub/WWW/TheProject.html HTTP/1.1
   Host: www.w3.org