2010-12-13 8 views
1

Firefoxは、ではありません。は、GETリクエストを送信するとhttp://www.mysite.com/foo?bar=10/12/2010のようなURLをエンコードします。私はURLをエンコードしなければならないことを知っているので、Firefoxがhttp://www.mysite.com/foo?bar=10%2F12%2F2010(/ =%2F)を要求しているのを見たと思う。私はWiresharkを使ってGETリクエストを調べました。クエリ文字列のエンコーディングは必要ですか?

URLのクエリ文字列をエスケープする必要がありますか?

私はWebHarvestを使用しています。http指示文でページをダウンロードするように頼んだら、上記のようなURLが( "/"ではなく%2F)エンコードされています。

答えて

1

/query of a URIで平野に許可されている:

query  = *(pchar/"/"/"?") 

他に何かがpercent-encodingを使用してエンコードする必要があります。

+0

thx。だから、私は – cdarwin

+0

と期待していたので、Firefoxは正しいことをしています.WebHarvestは盗聴されています... – cdarwin

+0

@cdarwin:はい。予約文字*はエンコードする必要がありますが、予約されていない文字は*エンコードできます。したがって、 '/'というクエリの内部は '%2F'と等価です。 – Gumbo

0

エスケープしてURLエンコードされている場合、短い答えは「はい」です。

URLエンコーディング中に通常エンコードされる文字はいくつかありますが、通常問題なくURLに表示されることがあります。

しかし、潜在的な問題が必ずしも明らかでない場合もあります。クエリの引数をエンコードするURLを推奨し、サイトからデコードします。結局のところ、あなたが何回も解読すれば、何の問題も起こらないはずです。

+0

ok ...しかし、Firefoxを参照するのは本当に奇妙なようですが、URLをエンコードしていません!どうして?私はfirefoxが正しいことをしていると思います... – cdarwin

+0

その特定のケースに対処するには、URLがどこから来ているかを具体的に特定する必要があります。私はまだそれについて少し曖昧です。 –

+0

あなたは私がアドレスバーに書かれたURLを入力することができ、その動作は私が得たものです。私はGumboの答えが正しいと思います。 – cdarwin

0

問題を再現できません。

<form> 
    <input type="hidden" name="bar" value="10/12/2010"> 
    <input type="submit"> 
</form> 

これは、アドレスバーに適切なエスケープを表示します。 <a>要素にこのURLを指定していませんか?次に、HTMLページでそれをハードコーディングするか、サーバー側言語で提供される機能を利用してエスケープする必要があります。

+0

私が説明したことは、単にアドレスバーにURLを入力するか、リンクを持つことです。example url cdarwin

+0

それから、あなた自身でエスケープする必要があります。 – BalusC

関連する問題