当 href 属性值是 url 编码时,链接不起作用

Posted

技术标签:

【中文标题】当 href 属性值是 url 编码时,链接不起作用【英文标题】:Link doesn't work when href attribute value is url encoded 【发布时间】:2016-09-26 16:53:38 【问题描述】:

为什么href属性值为url编码后链接失效?

我们不应该对其进行编码吗?在 Chrome 和 FF 中观察到相同的行为

作品

<!DOCTYPE html>
<html>
<body>

<p>Sweet fruit: <a href="http://google.com/search?q=banana">Banana</a></p>

</body>
</html>

不起作用

<!DOCTYPE html>
<html>
<body>

<p>Sweet fruit<a href="http%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3Dbanana">Banana</a></p>

</body>
</html>

【问题讨论】:

【参考方案1】:

它是一个受保护的链接。 这就是编码的工作方式 http://www.w3schools.com/tags/ref_urlencode.asp

这是你显示的链接,第一个被解码,第二个被编码。

http://google.com/search?q=banana http%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3Dbanana

让我们看看

在这种情况下,“/”变成 %2F,“?”一个 %3F 和 "=" %3D

它是一种保护,因此无法使用该链接。 dns 无法读取。 如您所见,第一个链接可点击,而第二个链接不可点击。

【讨论】:

【参考方案2】:

dns 找不到那个链接...

【讨论】:

以上是关于当 href 属性值是 url 编码时,链接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter - 当 URL 以斜杠结尾时,相对 URL 停止工作?

js处理url中的请求参数(编码/解码)

jQuery 选择器,包括属性和同级选择器不起作用

嵌套在数据部分中时,href链接不起作用

Vue笔记

当 URL 可在浏览器中访问时,SSH Curl 不起作用