人気ブログランキング | 話題のタグを見る

[Java] URI.resolveのバグ!?

URI.resolveって結構便利なんでよく使ってるんですが、一点不便な所を気づきました。不便と言っても、ま、確かに表記上間違っていると言われればそれまでなんですが、ユーザからの入力をそのままresolveする時などは注意が必要です。

どんな不便かと言うと、baseのURLにスキーマとホスト名だけ、つまり最後に「/(スラッシュ)」が無い文字列を渡すと、その文字列に、パスがくっ付くんですよね。

言葉で表現しても良く分からないと思うので、下記の例を参照してください。

String good_base = "http://hogehoge.jp/";
String bad_base = "http://hogehoge.jp";
String path = "tegetege/index.html";

URI good_uri = URI(good_base);
URI bad_uri = URI(bad_base);

System.out.println(good_uri.resolve(path));
// 出力 : http://hogehoge.jp/tegetege/index.html
System.out.println(bad_uri_2.resolve(path));
// 出力 : http://hogehoge.jptegetege/index.html

by etrojan2006 | 2007-02-21 15:01 | Java  

<< [Linux] sshd パス... [Java] ArrayLis... >>