编码URL导致来自浏览器的禁止消息的奇怪问题

时间:2010-11-01 16:04:39

标签: php javascript internet-explorer

准备好一些陌生感。以下在Fi​​refox中工作正常:

重定向到此网址:

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext&copy=1

但是,它在IE8中不起作用,因为它将上面的内容转换为此,请注意最后地址中的版权符号:

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext©=1

所以,我觉得很奇怪,我只想encodeURIComponent

window.location.href = 'edit_rule.php%3Frule_name%3Dtest%26rule_type%3Dalloc_ext%26copy%3D1';

同时,Firefox和IE8现在给我一个Forbidden消息!?!

  

您无权访问/webs/van/front-end/slr/edit_rule.php?此服务器上的rule_name = test2& rule_type = alloc_ext& copy = 1。

我不明白,发生了什么事?

感谢大家的帮助。

2 个答案:

答案 0 :(得分:6)

&需要HTML encoded,而不是URI编码。具体而言,请将其替换为&

从技术上讲,IE8的行为是错误的,因为&copy在结尾处缺少分号,使其成为HTML编码字符。

答案 1 :(得分:0)

IE8很可能会尝试更改并复制到版权符号 - ©© 更改参数名称是一个很容易解决的问题。

我还在rule_name之前的问号后面看到错误消息中的空格,可能会导致一些问题。