【发布时间】:2012-04-28 16:33:22
【问题描述】:
href 属性的内容应该怎么做:HTML 还是 URL 编码?
<a href="???">link text</a>
一方面,由于 href 属性包含 URL,我应该使用 URL 编码。 另一方面,我将这个 URL 插入到 HTML 中,所以它必须是 HTML 编码的。
请帮助我克服这个矛盾。
谢谢。
编辑:
这是矛盾的。假设 URL 中可能有 '' 字符。 URL 编码不会对它们进行转义,因此在 href 属性中会有保留的 HTML 字符,这违反了标准。 HTML 编码会转义 '' 字符,HTML 将有效,但之后 URL 中会出现意外的 '&' 字符(这是 URL 的保留字符,它用作查询字符串参数的分隔符) .
Reserved URL characters 构成了reserved HTML characters 的超集,除了为 HTML 保留但不为 URL 保留的“”。
编辑 2:
我对“”字符的理解是错误的,它们实际上是通过 URL 编码进行了百分比转义。如果是这样,在这种情况下,URL 编码就足够了,不是吗?
【问题讨论】:
-
到目前为止你有没有尝试过?
-
这个“你试过什么了吗”的表情包越来越傻了。对于浏览器错误恢复,很大一部分数据编码是为了防止安全问题。如果你正在尝试某事,你应该如何告诉你做对了?假设您拥有的任何安全测试套件都有足够的覆盖范围?这是一个关于基本技术的完全合理的问题。
-
Quentin 或多或少是对的,但问题仍然存在,什么情况下可能是矛盾的?你能举个例子吗?您是否尝试了这两种解决方案,它们都有效,还是都无效?
-
是的,我已经尝试了两种方法并更新了问题。在我看来,HTML 编码在这种情况下根本不合适。现在我想弄清楚是不是真的如此。
-
重新编辑:我不确定您的意思是“HTML 编码将转义 '' 字符并且 HTML 将是有效的,但之后会有意外的 '&' URL 中的字符”怎么回事?
&lt;只是在您的 HTML 源代码中编写<的方法,它在非常低的级别被转换回<,早在它被发送到服务器之前。与&amp;相同:你应该写&amp;,系统会知道你的意思是&amp;。还是你的意思是别的?
标签: html urlencode html-encode