为什么在按住Control键单击链接时,Internet Explorer会对URL进行不同的编码

时间:2013-03-21 12:42:56

标签: internet-explorer encoding character-encoding

我遇到一个问题,Internet Explorer(10,但我认为我对旧IE有相同的问题)将根据我是否正常点击链接或者如果我在新标签中打开它来对URL进行不同编码按住Control键点击它。

我已经制作了一个小型JSBin来测试这个问题,这就是当我点击链接正常时Wireshark所显示的内容:

Normal click

这是控制点击

时的结果

Control-click

请注意,URL中的“Å”编码方式不同,第一种情况下为“\ 305”,第二种情况下为“\ 303 \ 205”。

如何重现

您需要Wireshark或类似的工具,因此需要做一些工作。

  1. 转到此Internet Explorer中的JSBin:http://jsbin.com/agukeg/5
  2. 启动Wireshark(或您选择的工具)并开始捕获。
  3. 点击链接“testme”(通常不使用Control)。
  4. 按住Control
  5. 的同时单击链接
  6. 比较Wireshark中的网址
  7. 为什么会发生这种情况,更重要的是,是否有解决方法或真正的解决方法?

1 个答案:

答案 0 :(得分:2)

这是一个无效的网址。像谷歌浏览器这样的浏览器可能会欺骗开发人员,因为他们的地址栏显示已解码的字符,但他们从不将这些字符发送到服务器,而是在后台使用标准URL编码此外,当您从Google Chrome地址栏中复制网址时,丑陋的编码会将其发送到剪贴板。

URL without encoding中允许的唯一字符是:

  

未预留

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i
j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 - _ . ~
     

保留
  必须有时编码

! * ' ( ) ; : @ & = + $ , / ? % # [ ]

对链接中的网址进行编码:

<a href="?pKod=BAS%C3%85R"></a>