为什么我必须对javascript链接进行双重编码?

时间:2016-02-25 18:21:40

标签: javascript html

<html>
 <a href="http://localhost/test.html?x=%c2%ae">Test1</a>
 <a href="javascript:window.location='http://localhost/test.html?x=%c2%ae'">Test2</a>
 <a href="javascript:window.location='http://localhost/test.html?x=%25c2%25ae'">Test3</a>
</html>

(%c2%ae为url编码的UTF-8)

使用像fiddler这样的工具,你不能依赖浏览器的位置栏。 Test1和Test3调用相同的URL,Test2调用不同的东西(浏览器之间不同)。

这种行为的原因是什么,为什么我必须对javascript href进行双重编码?

1 个答案:

答案 0 :(得分:2)

值得注意的是,这是一个非常糟糕的做法,你应该只使用

href="http://localhost/test.html?x=%C2%AE"

正如您对Test1所做的那样。

您需要双重逃避的原因是因为浏览器会为href=""属性取消输入一次,而window.location=更改会再次取消输入。

相关问题