- - PR -
ブラウザーでの相対パス→絶対パス変換について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-14 13:39
いつも お世話になります。
さっそくですが、下記のURLでアクセスできるtomcat webアプリで http://hogehoge:8080/testapp/ABC.jsp ABC.jspの内部には、別のJSPへの相対パスでのリンクがあります。 <a href="XYZ.jsp">XYZ</a> (*XYZ.jspは ABC.jspと同じディレクトリにある) この際、ブラウザーで、ABC.jspにまず絶対PATHでアクセスして 帰ってくるHTMLをブラウザーで表示し、そのHTMLソースをみるとまま当然 <a href="XYZ.jsp">XYZ</a> と相対パスのままのHTMLのリンクがローカルにきています。しかし、 マウスで、そのリンクの上をMOUSEOVERすると ブラウザー(IEですが) 下のほうに 絶対パスが表示されます。実際クリックすると絶対パスで ブラウザーはアクセスしますよね。 http://hogehoge:8080/testapp/XYZ.jsp と。いままでは、別に不思議に思わなかったんですが、 HTTP をSNIFFERして レスポンスの ヘッダーやHTML本体をみても 相対パスから 絶対パスを作り出す情報が送られていません。 すなわち HTTPヘッダーに いま http://hogehoge:8080/testapp っていうCONTEXSTだよー、という情報がないのです。 ブラウザーはいったいどうやって 絶対パスを作り出しているんでしょうか? だれが、”http://hogehoge:8080/testapp”の部分をブラウザーに 教えているのでしょう? 目的を書きますと、あまり上記と関係ないとおもうのと 長くなるので簡単に書くと Proxyservletというのを作って、別システムのPHPとか ほかのJava webappをServlet経由(Proxy)で表示させようとしてるのですが、 (sitemeshの実験です。) ブラウザーが目的の絶対パスURLを作ってくれないのです。 上記でいうと XYZへのリンクをおすと http://hogehoge:8080/XYZ.jsp にいってしまう。。。 (ABC.jspとXYZ.jspがルートディレクトりにあれば問題なく動いています。) レスポンスのヘッダーをいじればいいのかなとHTTPレスポンスの中身をみても そういう情報がブラウザーに帰ってないので、あーどうしたものやらと。 なにか見過ごしているのではとおもいつつ 解決しないので投稿しました。 (正直、javaに限った話でないかもと思いつつ投稿しております、すみません) ココ変だよ、というものでもいいので 何かありましたらよろしくお願いします。 [ メッセージ編集済み 編集者: hypergori 編集日時 2005-06-14 13:40 ] | ||||
|
投稿日時: 2005-06-14 13:53
こんにちは
今アクセスし表示しているURLをブラウザは分かっているわけですから、そこから生成します。 ちなみにhtml中にbase要素を入れて無理矢理ベースとなるURLを変更することもできます。 | ||||
|
投稿日時: 2005-06-14 16:40
たとえば、ブラウザさんが認識している「現在のURL」が
http://hogehoge:8080/testapp の場合と http://hogehoge:8080/testapp/ の場合では、 相対URL href="XYZ.jsp" の解決結果が異なります。このへんは注意が必要です。 | ||||
|
投稿日時: 2005-06-14 20:44
どんな風に ちがうんでしょうか?
http://hogehoge:8080/testapp の場合は http://hogehoge:8080/XYZ.jsp で http://hogehoge:8080/testapp/ の場合は、 http://hogehoge:8080/testapp/XYZ.jsp でしょうか?あとその”現在のURL”は HTMLのbase要素でのみ変更可能なのでしょうか? 質問ばかりですみません。 |
1