System.Uri の MakeRelative
2003年1月21日(火曜日)
System.Uri の MakeRelative
System.Uri.MakeRelative() は対象の URL とベース URL のスキーム、ホスト、ポートが一致しているとクエリストリングをばっさり切り落としてくれるのですが、一致していないとクエリストリングがそのままだったりするのではまりました。内部で何をしているのか何となく分かりますが……。
しかもその際、返ってくる文字列が AbsoluteUri ではなく ToString() なのがスゴイ。以下のようなコードを実行すると……
Uri baseUri = new Uri("http://www1.example.com"); Uri targetUri = new Uri("http://www2.example.com/foo?%83e%83X%83g", true); Console.Write(baseUri.MakeRelative(targetUri));
激しく文字化けした結果が得られたりします。ちょっと使いものにならないんですが……。
というわけで、Bakera.Url を微妙に修正したり。
- 「System.Uri の MakeRelative」にコメントを書く
- 前(古い): CSS2.1 の Generic Family
- 次(新しい): クロスサイトスクリプティング脆弱性