【问题标题】:Do web browsers always send a trailing slash after a domain name?网络浏览器是否总是在域名后发送斜杠?
【发布时间】:2011-02-04 14:26:44
【问题描述】:

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

意思是,如果我在网络浏览器的地址栏中输入http://example.com,浏览器是否应该添加斜杠(http://example.com/)?

【问题讨论】:

    标签: http browser


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

    正如 RFC 2616 所说:

    3.2.2 http 网址

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

    http_URL = "http:" "//" 主机 [ ":" 端口] [abs_path [“?”查询]]

    如果端口为空或未给出, 假设端口 80。语义
    是识别的资源是 位于服务器监听 该端口上的 TCP 连接 主机,以及请求的 URI 资源是 abs_path(第 5.1.2 节)。 在 URL 中使用 IP 地址 应尽可能避免 (参见 RFC 1900 [24])。 如果 URL 中不存在 abs_path,它 当用作 资源的请求 URI(部分 5.1.2)。如果代理接收到的主机名不是完全限定的 域名,它可以添加它的域 到它收到的主机名。如果一个 代理收到一个完全合格的 域名,代理不得更改 主机名。

    阅读更多:http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGbpjYWa

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

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.w3.org
    

    接下来是 要求。 注意绝对路径 不能为空;如果没有 原始 URI,必须给出 作为“/”(服务器根目录)。

    阅读更多:http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU

    【讨论】:

      【解决方案3】:

      请注意,当 URL 包含路径元素时,这是 very different 问题:

      http://example.com/dir
      

      是一个

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

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

      【讨论】:

      • 这是一个很好的观点。建议以“/”结束网址
      • @Claudio,请参考一下?
      • @Yaggo:看看谷歌“斜杠 url”。我不记得我在哪里读过它,对不起。
      • 我做了,没有发现任何证据,只有个人意见。不带斜杠的 URI 非常受欢迎(仅此一项并不能保证任何东西),而且我从未见过基于事实的反对它们的论据。 (当网络主要是静态文件时,将 / 附加到目录可能是事实上的标准,但我现在没有理由更喜欢它。)
      • “目录”的概念在当今的网络中是模糊的。省略尾部斜杠不会强制服务器进行“额外检查”本身。 URI 不一定反映文件层次结构或与文件有任何关系。我认为您的观点是关于统计文件,而我一般谈论的是 Web 应用程序。
      【解决方案4】:

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

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

      获取/HTTP/1.0

      上面的/不能省略。

      【讨论】:

      • 为了澄清这一点,域在 Host 标头中发送(仅限 HTTP 1.1)。
      • 那么你的意思是,即使你有一个空路径,也保证URL有一个斜杠?
      • @Hank:我的意思是如果你有一个空路径,一个/被发送。如果路径部分 not 为空(在这种情况下,浏览器发送的正是 URL 栏上的内容,但服务器可以选择在其响应)。
      • (抱歉干预。)换句话说:如果路径为空,浏览器添加/。如果路径不为空,则由服务器添加尾随 /(如果已添加)。
      • @jholster 错了。请参阅 RFC 2616。此处引用 stackoverflow.com/a/2581514/529442
      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 2018-12-31
      • 2016-05-21
      • 1970-01-01
      • 2011-11-30
      • 2017-03-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多