<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进行双重编码?
答案 0 :(得分:2)
值得注意的是,这是一个非常糟糕的做法,你应该只使用
href="http://localhost/test.html?x=%C2%AE"
正如您对Test1所做的那样。
您需要双重逃避的原因是因为浏览器会为href=""
属性取消输入一次,而window.location=
更改会再次取消输入。