[▲前のスレッド]

2196. URLの%が%25になる?? 
iNOUE Koich! 2003/7/23 (水) 08:34:18
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
こんにちは。
cyclamen.cgiとPaintBBS.jarで質問箱を設置しようと
考えているのですが、「お絵かき」の画面に移動した
際に読み込もうとするアプレットのURLで、%7eの部分
が%257eとなってしまって読み込めませんでした。
(以下はサーバのログの一部です。)

[23/Jul/2003:08:15:02 +0900] "GET /%257einoue/QandA_BBS/pbbs/PaintBBS/class.class HTTP/1.1" 404 1056
[23/Jul/2003:08:15:02 +0900] "GET /%257einoue/QandA_BBS/pbbs/PaintBBS.class HTTP/1.1" 404 1056
[23/Jul/2003:08:15:02 +0900] "GET /%257einoue/QandA_BBS/PaintBBS.jar HTTP/1.1" 404 1056
[23/Jul/2003:08:15:02 +0900] "GET /%257einoue/QandA_BBS/null HTTP/1.1" 404 1056
[23/Jul/2003:08:14:58 +0900] "GET /%7einoue/QandA_BBS/cyclamen.cgi?mode=draw HTTP/1.1" 200 1342
[23/Jul/2003:08:14:54 +0900] "GET /%7einoue/QandA_BBS/cyclamen.cgi?page=0 HTTP/1.1" 200 2036
[23/Jul/2003:08:14:54 +0900] "GET /%7einoue/QandA_BBS/cyclamen.cgi?tree=r0 HTTP/1.1" 200 673
[23/Jul/2003:08:14:53 +0900] "GET /%7einoue/QandA_BBS/cyclamen.cgi HTTP/1.1" 200 614

これはどこに問題があるのでしょうか?スクリプトは
特に手を加えておらず、サーバのOSはRedHat Linux7.0
です。

PCの環境はPowerMacG4/1GDP(MDD)でMacOSX10.2.6およ
びブラウザはIE5.2.3です。

なお、%7eの部分を~にした場合は正しく読み込めてい
ます。ですが、MacOSXがUNICODEを扱う関係で、URLと
して~を使ったものをメールなどで送ると、全角の ̄と
して表示してしまうことがあり、そうなるとURLとして
機能しませんから、できるだけ%7eを使うようにしたい
のです。

どういうところの問題かよく分からないのですが、も
し何かご存知の方がいれば教えて下さい。


2197. Re:URLの%が%25になる?? 
iNOUE Koich! 2003/7/23 (水) 12:33:12
Mozilla/4.0 (compatible; MSIE 5.22; Mac_PowerPC)
▼ iNOUE Koich!さん
> 特に手を加えておらず、サーバのOSはRedHat Linux7.0

RedHat Linux 8.0でした。httpサーバはapache 2.0.40です。

(別件の質問はつまらないミスが原因と分かりましたので削除いたしました。すいませんでした。)


2198. Re2:URLの%が%25になる?? 
あけび(管理者) 2003/7/23 (水) 13:47:58
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
サーバまでの経路のどこかで余分なURIエンコードがされて % が %25 になってしまっているような感じですが、
別のブラウザを使った場合や別の人がアクセスした場合の状況も見ないとどこでそうなっているかの特定は難しいです。

アプレットのリクエスト以外は正常なところを見ると、
お使いのブラウザのappletタグ処理に問題があるような気もしますが、あくまで推測で断定はできません。
ブラウザのアドレスバーに直接 http://〜/%7einoue/QandA_BBS/PaintBBS.jar を指定した場合はどうなりますか?


2201. Re3:URLの%が%25になる?? 
iNOUE Koich! 2003/7/23 (水) 19:07:24
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
▼ あけび(管理者)さん
> ブラウザのアドレスバーに直接 http://〜/%7einoue/QandA_BBS/PaintBBS.jar を指定した場合はどうなりますか?

アドバイスどうもありがとうございました。これをやってみたところ、jarファイルがダウンロードされました。
送信されてくるページのappletタグに、フルのURLを記述してみましたところ、問題なく%7eをそのまま使ってくれました。やはりMac版IE5.2.3の仕様なんでしょうかね。


2203. Re4:URLの%が%25になる?? 
あけび(管理者) 2003/7/23 (水) 19:27:54
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
ダウンロードができたのであれば、やはりブラウザのappletタグ内でのURLの解釈の問題のようですね。
サーバや経路には問題はないようですので、CGIスクリプト側での対応もできそうです。

cylib.cgi中に
printf "<applet code=\"%s\" archive=\"%s\" name=\"%s\" width=\"%s\" height=\"%s\">\n",
という行がありますので、この行の前に

local($p)=$ENV{'SCRIPT_NAME'} =~ /^(.*\/)/;
$p =~ s/%([\da-fA-F][\da-fA-F])/pack("H*",$1)/eg;
local(@s)=split(/,/,$applet_archive);
foreach(@s){$_="$p$_"; s/\/\.\//\//s;}
$applet_archive = join(",",@s);

を追記してみてください。
appletタグでのみ、%xx がデコードされた状態のURLを渡すようになります。


2205. Re5:URLの%が%25になる?? 
iNOUE Koich! 2003/7/23 (水) 20:26:24
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
▼ あけび(管理者)さん
> appletタグでのみ、%xx がデコードされた状態のURLを渡すようになります。

javaアプレットが読み込まれました!どうもありがとうございます。


2202. Re3:URLの%が%25になる?? 
iNOUE Koich! [URL] 2003/7/23 (水) 19:18:15
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
▼ あけび(管理者)さん
> 別のブラウザを使った場合や別の人がアクセスした場合の状況も見ないとどこでそうなっているかの特定は難しいです。

上記のURLです。baseタグを使うとどうだろうと思いましたが、結果は同じでした。


2204. Re4:URLの%が%25になる?? 
あけび(管理者) 2003/7/23 (水) 19:30:54
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
私の環境(WindowsXP/IE6)からは正常に表示できました。
やはりブラウザ特有の症状である可能性が高いです。


2209. Re5:URLの%が%25になる?? 
iNOUE Koich! 2003/7/24 (木) 22:43:36
Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
▼ あけび(管理者)さん
> 私の環境(WindowsXP/IE6)からは正常に表示できました。
> やはりブラウザ特有の症状である可能性が高いです。


教えて頂いたような変更を施した場合、空白の入ったパスで問題が起きました。こちらではSCRIPT_NAME環境変数には%7eが~に変わった文字列が代入されていましたので、おそらくデコードされたものが渡されているんだと思います。MacOSX版IEでは、appletタグの中に%が書かれていてもエンコードはせずにそのまま%として扱うようですから、むしろ、URLに含めた場合問題になるかも知れない文字をURLエンコードしてやる方が良いように思いましたので、あちこちのページを参考に、

$p =~ s/([^\da-zA-Z;:\/?@&=+\-_$,.])/sprintf("%%%x", unpack("C", $1))/ge;

と変更してみたところ、MacOSX版IEでの%7eの問題もなく、空白の入ったパスでも使えるようになりました。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.84.01
[ut:0.008][st:0.000]