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人ではとても解決できませんでした。
今回本当に勉強になりました。
ありがとうございました。

[上に] [前に] [次に]