我有包含##
(eg http://foo.com/bar##baz
) 的 URI。URI.parse
当我尝试解析它时,Ruby 的函数会引发错误。
URI 中是否禁止使用双哈希标记?还是 Ruby Parser 太严格了?
我有包含##
(eg http://foo.com/bar##baz
) 的 URI。URI.parse
当我尝试解析它时,Ruby 的函数会引发错误。
URI 中是否禁止使用双哈希标记?还是 Ruby Parser 太严格了?
片段标识符可能不包含井号。解析器是正确的。
片段标识符的语法定义如下:
fragment = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved
,pct-encoded
并sub-delims
定义为:
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
它们是无效的。A#
表示余数是一个片段,一个片段中可能没有a #
。
可寻址允许它:
require 'addressable/uri'
Addressable::URI.parse('http://foo.com/bar##baz').fragment
#=> "#baz"
Addressable 应该更接近于 rfc,但 wko 知道。我会说这取决于解释。