作为IRIS有效的HTML属性值?(Are IRIs valid as HTML attribute

2019-08-04 23:17发布

它是有效的HTML使用的IRI包含非ASCII字符作为属性值(例如,用于href属性),而不是URI的? 有没有在HTML香精(HTML和XHTML,4和5)之间的任何差异? 至少RFC 3986似乎在暗示,事实并非如此。

我意识到,这很可能是安全的(关于老年人和IRI-不知道软件)使用的编码%,但我正在寻找有关于标准的一个明确的答案。

到目前为止,我已经做了一些测试,与W3C验证 ,并在URI是不会触发与HTML 4/5和4/5 XHTML文档类型的任何警告或错误转义Unicode字符(当然没有错误消息没有按”吨意味着不存在误差)。

至少铬还支持原UTF-8光圈,但发射的HTTP请求之前百分号逃逸它们。 另外,我的Web服务器(lighttpd的),似乎支持他们的百分比编码在HTTP请求中未编码的形式以及UTF-8字符。

Answer 1:

HTML 4.01是直截了当不够。 不同的属性有不同的规则,以它们可以包含什么,但如果我们用href属性的处理上<a>元素,那么HTML 4规格,在URI属性节B.2.1非ASCII字符值表示:

......下面href的值是非法的:

<A href="http://foo.org/Håkon">...</A>

HTML5是不同的。 它说的IRI是有效的,只要它们符合一些附加条件。

URL是一个有效的URL,如果满足下列条件中的至少一个成立:

  • URL是一个有效的URI引用[RFC3986]。

  • 该网址是一个有效的IRI参考,并没有查询组件。 [RFC3987]

  • 该网址是一个有效的IRI参考和查询组件不包含转义非ASCII字符。 [RFC3987]

  • URL是一个有效的IRI引用和URL的文档的字符编码是UTF-8或UTF-16编码。 [RFC3987]

XHTML 1.x中遵循相同的规则,HTML 4.01。

XHTML5是一样的HTML5。



Answer 2:

如有疑问,请阅读确切的答案正式HTML规范。

HTML 4不支持的IRI的。 它们必须被编码为每URI的RFC 3987第3.1节 ,或每个编码%的编码非ASCII URI数据为UTF-8 HTML4 B.2.1节

HTML 5支持在网址是允许的,占所有地方都URI和IRI HTML5 2.6节 。



文章来源: Are IRIs valid as HTML attribute values?