プロが教える店舗&オフィスのセキュリティ対策術

CGIで動的にCSVファイルを作成し、ダウンロードできるようなものを作成しています。
httpヘッダのcontent-dispositionでファイル名を指定しているのですが、 NetScape7.01ではファイル名の先後に勝手に.CGIがついてしまいます。
何か対処方はないのでしょうか?

A 回答 (2件)

HTTP/1.1 200 OK


などのヘッダまでCGIから出力しているということですか?

だとすればNPHスクリプトですね?
ならばConnectionヘッダはKeep-Aliveではなくcloseで
いいと思います。


Content-Disposition: attachment; filename="a.csv"
Content-Type: application/download; name="a.csv"
この2ヘッダを出力しても回避できない現象だとすると
ブラウザ特有の挙動のようですね?

わたしの知る最終手段として、ブラウザをダマす方法が
あります。以下のような感じで拡張パスを使う方法ですが
うまくダマせるかどうかはやってみないとわかりません。
<form method="post" action="download.cgi/a.csv">


これとは別に、素直にa.csvというファイルを書き出して
メタタグで呼び出すようなカラクリも使えるかとは思いますが・・・。
    • good
    • 0
この回答へのお礼

ありがとうございました。
<form action="XXX.cgi/a.csv?param=XXX&・・・">
のようにしたら成功しました。
参考までに各ブラウザでの確認結果を。
IE6、NS4.7、NS7.1、NS7.01
⇒Content-Dispositionで指定のファイル名でDL成功

NS6⇒ダウンロードのダイアログ(開くか保存するか選択するところ)のタイトルはa.csv、ファイル保存先指定のデフォルトファイル名はContent-Dispositionのファイル名になりました。

あと下の補足のヘッダはについてはプロキシサーバもどき?ソフトのヘッダ監視機能から取得したものなのでHTTP/1.1 200 OKは出していません。
Keep-Aliveはアパッチが勝手につけてくれたものだと思います。
紛らわしくてすみません。

お礼日時:2005/04/13 15:49

回答ではないのですが一つアドバイスしておきますと、


具体的にどういうヘッダを現状で出力されているかを
書いたほうがこういう場合は回答が得られ易いと思います。

ポイントとしては、ブラウザ特有の問題なのかヘッダの
出し方に起因するものかだと思います。

併せて、よく使われるヘッダを以下に書いておきます。
(download部分はoctet-streamと書かれる場合も)
(ファイル名a.csvで512バイトの例)
Content-Type: application/download; name="a.csv"
Content-Disposition: attachment; filename="a.csv"
Content-Length: 512

この回答への補足

ご指摘通り、現状のものを書き忘れていましたので
補足します。

以下は現状ののHTTPヘッダです。

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2005 03:09:44 GMT
Server: Apache/1.3.29 (Unix) PHP/4.2.4-dev mod_ssl/2.8.16 OpenSSL/0.9.7d
Content-Disposition: attachment; filename="a.csv"
Content-Length: 14
Keep-Alive: timeout=15, max=100
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
Content-Type: application/download; name="a.csv"

補足日時:2005/04/13 12:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!