带有双哈希 (##) 的 URI 是否无效?



我有包含##(例如http://foo.com/bar##baz)的URI。当我试图解析它时,Ruby的URI.parse函数抛出一个错误。

uri中禁止使用双哈希符号吗?还是Ruby解析器太严格了?

片段标识符不能包含散列符号。解析器是正确的

片段标识符的语法定义如下:

fragment = *( pchar / "/" / "?" )

pchar定义为:

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

unreservedpct-encodedsub-delims定义为:

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims  = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

无效。#表示剩余部分是片段片段中可能没有#

Addressable允许:

require 'addressable/uri'
Addressable::URI.parse('http://foo.com/bar##baz').fragment
#=> "#baz"

Addressable应该更接近rfc,但是wko知道。

相关内容

  • 没有找到相关文章

最新更新