URI 的任何路径段都可以有查询组件吗?
根据 第 3.3 节,路径组件 >RFC2396 - 统一资源标识符,
该路径可以由一系列由单个斜杠“/”字符分隔的路径段组成。在路径段中,字符“/”、“;”、“=”和“?”被保留。每个路径段可以包括一系列参数,由分号“;”指示。特点。这些参数对于相对引用的解析并不重要。
但是,除了最后一个片段之外,我从未在任何片段中见过带有查询参数的 URL。所以,我不确定我是否正确地阅读了这篇文章。
http://www.url.com/segment1?seg1param1=val1/page.html?pageparam1=val2
是有效的 URL 吗?
According to the Section 3.3, Path Component of RFC2396 - Uniform Resource Identifiers,
The path may consist of a sequence of path segments separated by a single slash "/" character. Within a path segment, the characters "/", ";", "=", and "?" are reserved. Each path segment may include a sequence of parameters, indicated by the semicolon ";" character. The parameters are not significant to the parsing of relative references.
However, I have never seen a URL with a query parameters in any segment other than the final one. So, I am not sure if I am reading this correctly.
Is http://www.url.com/segment1?seg1param1=val1/page.html?pageparam1=val2
a valid URL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(4)
当你看下面的语法时,它是这样写的:
路径 = [ 绝对路径 |不透明部分] path_segments = 段 *( "/" 段 ) 段 = *pchar *( ";" 参数 ) 参数 = *pchar pchar = 未保留 |逃脱| “:” | “@”| “&” | “=”| “+”| “$” | “,”
一个段由 pchar 和 param 组成,param 本身就是一个 pchar。
当我们继续读下去的时候,绝对没有“?”了。 pchar 字符组件中的字符。所以参数中不能有“?”,也不能有“?”分段。
所以我同意爱德华·汤姆森的回答,他说“?”仅分隔查询段,不能在路径内使用。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
RFC 所指的内容是这样的:
可以将其解释为带有参数
param=value
的路径/foo/bar/baz.html
到bar
段。不使用问号。请注意,RFC 2396 已被 RFC 3986 废弃,后者省略了以下规范特定于段的参数有利于一般注意,实现可以(并且确实)做不同的事情来嵌入特定于段的参数:
What the RFC is referring to is something like this:
That could be interpreted as the path
/foo/bar/baz.html
with the parameterparam=value
to thebar
segment. No question marks are used.Note that RFC 2396 has been obsoleted by RFC 3986, which omits specification of segment-specific parameters in favor of a general note that implementations can (and do) do different things to embed segment-specific parameters: