浏览器会忽略URL中的斜杠吗?

16 browser url uri

我注意到Chrome和Firefox都忽略了URL中单词之间的斜杠.

所以,github.com/octocat/hello-world似乎相当于github.com//////octocat////hello-world.

我正在编写一个解析URL并检索其中一部分的应用程序,并且由于这种行为,我能够在不修改代码的情况下返回原始URL,在我看来这是非常方便的.我不知道依靠这个怪癖是不是一个好主意.

Jor*_*ran 18

根据此,路径分隔符被定义为单斜杠.(搜索路径组件)

请注意,浏览器通常不会修改URL.浏览器可能追加/在URL的结尾,但在你的情况下,多余的斜线的URL一起在请求被发送简单,所以它服务器忽略斜杠来代替.

另外,看看:

即使这种行为对您来说很方便,通常也不建议这样做.此外,缓存也可能受到影响(来源):

由于您的浏览器和服务器都缓存单个页面(根据其缓存设置),通过稍微不同的URI多次请求同一文件可能会影响缓存(取决于服务器和客户端实现).

  • 生成有效的HTTP请求需要`/`.详见[这里](http://webmasters.stackexchange.com/questions/35643/is-trailing-slash-automagically-added-on-click-of-home-page-url-in-browser). (2认同)

Gum*_*mbo 9

空路径段根据规范有效:

path          = path-abempty    ; begins with "/" or is empty
              / path-absolute   ; begins with "/" but not "//"
              / path-noscheme   ; begins with a non-colon segment
              / path-rootless   ; begins with a segment
              / path-empty      ; zero characters

path-abempty  = *( "/" segment )
path-absolute = "/" [ segment-nz *( "/" segment ) ]
path-noscheme = segment-nz-nc *( "/" segment )
path-rootless = segment-nz *( "/" segment )
path-empty    = 0<pchar>

segment       = *pchar
segment-nz    = 1*pchar
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
              ; non-zero-length segment without any colon ":"

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
Run Code Online (Sandbox Code Playgroud)

在后一个URI中https://github.com//////octocat////hello-world,路径//////octocat////hello-world将由以下内容组成:

  • //////octocat////hello-world:路径贪婪
    • /:
    • /:
    • /:
    • /:
    • /:
    • /octocat:segment-nz
    • /:
    • /:
    • /:
    • /hello-world:segment-nz

删除这些空路径段将构成完全不同的URI.服务器如何处理这些空路径段是一个完全不同的问题.


Wor*_*mbo 6

实际上浏览器不会忽略它们,它们会在HTTP请求中将它们传递给Web服务器.服务器可能决定忽略它们,但技术上乘以斜线会产生不同的URL.

W3.org指定URL的路径部分由"路径段"组成,由/路径段组成,路径段由零个或多个"URL单元"(字符)组成,除了/?,因此允许空路径段,这是什么你复制斜杠时会得到.

有关详细信息,请参见http://www.w3.org/TR/url-1/