我注意到Chrome和Firefox都忽略了URL中单词之间的斜杠.
所以,github.com/octocat/hello-world似乎相当于github.com//////octocat////hello-world.
我正在编写一个解析URL并检索其中一部分的应用程序,并且由于这种行为,我能够在不修改代码的情况下返回原始URL,在我看来这是非常方便的.我不知道依靠这个怪癖是不是一个好主意.
Jor*_*ran 18
根据此,路径分隔符被定义为单斜杠.(搜索路径组件)
请注意,浏览器通常不会修改URL.浏览器可能追加/在URL的结尾,但在你的情况下,多余的斜线的URL一起在请求被发送简单,所以它是服务器忽略斜杠来代替.
另外,看看:
即使这种行为对您来说很方便,通常也不建议这样做.此外,缓存也可能受到影响(来源):
由于您的浏览器和服务器都缓存单个页面(根据其缓存设置),通过稍微不同的URI多次请求同一文件可能会影响缓存(取决于服务器和客户端实现).
空路径段根据规范有效:
Run Code Online (Sandbox Code Playgroud)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 / ":" / "@"
在后一个URI中https://github.com//////octocat////hello-world,路径//////octocat////hello-world将由以下内容组成:
//////octocat////hello-world:路径贪婪
/:段/:段/:段/:段/:段/octocat:segment-nz/:段/:段/:段/hello-world:segment-nz删除这些空路径段将构成完全不同的URI.服务器如何处理这些空路径段是一个完全不同的问题.
实际上浏览器不会忽略它们,它们会在HTTP请求中将它们传递给Web服务器.服务器可能决定忽略它们,但技术上乘以斜线会产生不同的URL.
W3.org指定URL的路径部分由"路径段"组成,由/路径段组成,路径段由零个或多个"URL单元"(字符)组成,除了/和?,因此允许空路径段,这是什么你复制斜杠时会得到.
有关详细信息,请参见http://www.w3.org/TR/url-1/
| 归档时间: |
|
| 查看次数: |
2408 次 |
| 最近记录: |