HTML 链接究竟是如何解释的?制表符是否特殊?

How exactly are HTML links interpreted? Are tab characters special?

如果我有一个像 <a href="www.exam ple.com"> 这样的 href 属性,点击输出 link 的结果是 www.exam%20ple.com,这应该不会指向 www.example.com。如果我使用 no-break space 字符 (U+00A0) 或 en-quad (U+2000)(再次以 www.exam%20ple.com 作为输出),我也会得到完全相同的输出。我认为这是因为两者都被 HTML 解释为标准的白色 space 字符(U+0020)。

现在,没有意义的是,如果我将 space 字符替换为制表符,即 <a href="www.exam ple.com">,单击 link 会成功并直接将我引导至www.example.com。我最初是在尝试调用 XSS 存储 javascript 漏洞时遇到这个问题的,其中各种符号被转义并且 'javascript' 的输入被清理。当我意识到使用制表符将 'javascript' 定界为 'java script' 允许我调用我的脚本时,我很高兴,但也很惊讶。为什么会这样?

Space 或制表符在域名中永远无效,只有当您的 client/browser 在使用之前对输入宽容时才会被接受。谢谢 user2864740.