2

Internet Explorer(10ですが、古いIEでも同じ問題があると思います)が、リンクを通常どおりクリックするか、Controlキーを押しながらクリックして新しいタブで開くかによってURLのエンコードが異なるという問題に直面しています。その上に。

この問題をテストするために小さなJSBinを作成しました。これは、通常リンクをクリックしたときにWiresharkが表示するものです。

通常のクリック

これは、 controlキーを押しながらクリックしたときに得られるものです。

Controlキーを押しながらクリック

URLの「Å」のエンコードが異なることに注意してください。最初のケースでは「\305」、2番目のケースでは「\ 303\205」です。

再現する方法

Wiresharkまたは同様のツールが必要なため、いくつかの作業が必要です。

  1. このJSBinにアクセスします:InternetExplorerのhttp://jsbin.com/agukeg/5
  2. Wireshark(または選択したツール)を起動し、キャプチャを開始します。
  3. リンク「testme」をクリックします(通常、Controlではありません)。
  4. コントロールを押しながらリンクをクリックします
  5. WiresharkのURLを比較する

なぜこれが起こっているのですか、そしてもっと重要なことに、回避策または実際の修正がありますか?

4

1 に答える 1

2

無効な URL です。Google Chrome のようなブラウザは、アドレス バーにデコードされた文字が表示されるため、開発者を欺く可能性がありますが、それらの文字をサーバーに送信することはなく、バックグラウンドで標準の 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 に答える