2

我遇到了一个问题,Internet Explorer(10,但我认为我对旧 IE 也有同样的问题)会根据我是否正常单击链接或是否通过 Control-clicking 在新选项卡中打开它来对 URL 进行不同的编码在上面。

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

正常点击

这是我在控制点击时得到的

按住 Control 键单击

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

如何重现

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

  1. 在 Internet Explorer中转到此 JSBin:http: //jsbin.com/agukeg/5
  2. 启动 Wireshark(或您选择的工具)并开始捕获。
  3. 单击链接“testme”(通常不使用 Control)。
  4. 按住 Control 的同时单击链接
  5. 比较 Wireshark 中的 URL

为什么会发生这种情况,更重要的是,是否有解决方法或真正的解决方法?

4

1 回答 1

2

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

URL中唯一允许的不带编码的字符是:

无保留

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 - _ . ~

保留
有时必须编码

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

对链接中的 URL 进行编码:

<a href="?pKod=BAS%C3%85R"></a>
于 2013-03-21T15:19:23.543 回答