IEで正常扱いの文字列、なぜNetScapeでエラーになるのですか?
[上に]
[前に]
[次に]
きょし
[E-Mail]
2000/04/04(火) 15:16:05
Perl(win32)を使用して、次のようなCGIを作成しました。
(test01.cgi)----------------------------------------------
print "Content-Type: text/html\n\n\n";
print"<HTML>\n";
・
・
・
$FileName = "./../../../Test/Test.dat";
print"<FORM ACTION=\"./test02.cgi?$FileName\" METHOD=POST>\n";
・
・
・
print"</HTML>\n";
---------------------------------------------------------
上のような方法でHTMLファイルを出力しています。
IEではこのHTML出力は正常に行われるのですが、
NetScapeでは
--------------------------
Error 404
見つかりません。 CGIスクリプトまたは
プログラムがありません : 〜\Test\testdata.dat
--------------------------
と表示されてしまいます。
どうもブラウザのジャンプ先として
"./test02.cgi?$./../../../Test/Test.dat\"
ではなく
"./Test/Test.dat\"
を認識しているようです。
$FileName = "./../../../Test/Test.dat";
の部分を
$FileName = "../Test/Test.dat;
と変更すると、NetScapeでも正常に出力できたので、
この$FileNameの文字列に問題があるようです。
$FileName = "./../../../Test/Test.dat"; →エラー
$FileName = "../Test/Test.dat"; →正常
この2つの違いは何なのでしょう。
初歩的な質問かもしれませんが、
ご存知の方、よろしくお願い致します。
風
2000/04/05(水) 00:03:16
原因はわかりませんが、私も同様の現象が起きたことがあります。
ディレクトリの階層が深すぎると、ネスケの場合、エラーになるみたいです。
ちなみに私の場合は、トップから4階層めにデータを置いたときにエラーになりました。
3階層めに上げたら動きました。
DM
[E-Mail]
2000/04/05(水) 00:22:24
NetScapeでは フォームで action=filename?get_string を
サポートしていないためと思われます。
method=postで指定してあるので
<FORM ACTION=\"./test02.cgi?$FileName\" METHOD=POST>
という記述でなく
<FORM ACTION=\"./test02.cgi\" METHOD=POST>
<INPUT TYPE=HIDDEN NAME=\"FileName\" VALUE=\"$FileName\">
などとするのが妥当と思われますがどうでしょうか?
きょし
2000/04/05(水) 08:54:27
[[解決]]
風さん、DMさん、ご教授ありがあとうございます。m(_ _)m
確かに風さんの教えの通り、
4階層以上のディレクトリ指定が原因だったようです。
DMさんの教えに従って
HIDDEN TYPEの<INPUT>タグを使用することにより、
無事次のCGIへファイル名を渡すことができました。
私1人ではとても解決できませんでした。
今回本当に勉強になりました。
ありがとうございました。
[上に]
[前に]
[次に]