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

Abs*_*Abs 1 javascript php internet-explorer

准备好一些陌生感.以下在Fi​​refox中运行良好:

重定向到此网址:

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext&copy=1
Run Code Online (Sandbox Code Playgroud)

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

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext©=1
Run Code Online (Sandbox Code Playgroud)

所以,我觉得很奇怪,就encodeURIComponent这样:

window.location.href = 'edit_rule.php%3Frule_name%3Dtest%26rule_type%3Dalloc_ext%26copy%3D1';
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢大家的帮助.

Pow*_*ord 6

&需要进行HTML编码,而不是URI编码.具体来说,替换它们&

从技术上讲,IE8的行为是错误的,因为最后&copy缺少分号使其成为HTML编码字符.

  • @Abs你需要删除`encodeURIComponent`.这仅适用于组件,您不能使用它对整个查询字符串进行编码 (2认同)