54

我有一个关于 URL 的问题:

我已经阅读了RFC 3986并且仍然对一个 URL 有疑问:

如果 URI 包含权限组件,则路径组件
必须为空或以斜杠 ("/") 字符开头。如果 URI 不包含权限组件,则路径不能
以两个斜杠字符(“//”)开头。此外,URI 引用
(第 4.1 节)可能是相对路径引用,在这种情况下,
第一个路径段不能包含冒号(“:”)字符。ABNF
需要五个单独的规则来消除这些情况的歧义,其中只有一个会匹配给定 URI 引用中的路径子字符串。我们使用通用术语“路径组件”来描述
解析器匹配到这些规则之一的 URI 子字符串。

我知道,这//server.com:80/path/info是有效的(它是一个架构相对 URL)

我也知道这http://server.com:80/path//info是有效的。

但我不确定以下是否有效:

http://server.com:80//path/info

我的问题背后的问题是,http://server.com:80//path/info当由http://server.com:80/path/info限制为的 URI 创建时,cookie 不会发送到/path

4

1 回答 1

62

查看带有多个正斜杠的 url,它会破坏什么吗?,在 URL 中使用双斜杠有什么缺点吗?,双斜杠在 URL 中是什么意思?RFC 3986 - 统一资源标识符 (URI):通用语法

共识:浏览器将按原样执行请求,它们不会更改请求。该/字符是路径分隔符,但作为路径段定义为:

path-abempty  = *( "/" segment )
segment       = *pchar

表示后面的斜线http://example.com/可以直接跟在另一个斜线之后,无限。服务器可能会忽略它,但浏览器不会,正如您所知道的。

词组:

如果 URI 不包含权限组件,则路径不能以两个斜杠字符(“//”)开头。

允许与协议相关的 URL,但特别指出在这种情况下server.com:80可能不存在任何权限(在您的示例中)。

所以:是的,它是有效的,不,不要使用它。

于 2013-12-11T16:04:43.693 回答