検索条件
全2件
(1/1ページ)
データをブラウザで開くのではなく、直接ファイルに保存させたい場合は、
Content-Type: application/xxx-data
という風にしておけば、大抵は未登録のコンテントタイプなので保存指示ウィンドウが出るようになります。
しかし、POST時にこの方法を用いてファイルを保存させようとすると、ファイル名選択ダイアログが出てきません(Firefoxにて確認)。各種blogツールにおいて、エクスポート時のメソッドがなぜGETなのか今まで疑問だったのですが、ようやく謎が解けました。
教訓:POSTメソッド発行時にファイルに保存させようとしてはいけない
cgiのファイルなどを実行させずに、そのままのファイル名でブラウザで表示させたい場合は
AddType text/plain .cgi RemoveHandler .cgi
というふうにします(Apache2用)。http://adiary.abk.nu/tools/tdiary2adiary.cgiで使ってる技です。
追記。mod_perlの影響か、RemoveHandler がうまく働かなくなってましたので、次のようにしました。
AddType text/plain .cgi AddHandler default-handler .cgi
cgiの場合、もっとスマートにファイルとして保存させる方法を発見しました。
Content-Disposition: attachment; filename=export_file_name.txt Content-Type: text/plain; charset=(文字コード);
とすれば良いようです。
一昔前の掲示板などで利用出来るタグを制限できるものがありますが、それと同等のモジュール(自作)をadiaryでは使用しています。属性値を認めると途端にタグの解析が難しくなります。
#!/usr/local/bin/perl use strict; my $inp = join('', <>); while($inp =~ /(<\w([^>"']|[=\s\n]".*?"|[=\s\n]'.*?')*?>)/s) { $inp = $'; print "$1\n"; }
だいたいこれでタグを認識できますが、IE/Firefox/Operaなどで色々確認した結果、壊れた(不正な形式の)htmlタグの解釈は統一されておらず、結局、その辺の仕様まで完全にサポートすることは非常に難しく、そこをつつけば、この手のタグ制限ルーチンの解析を避けて、ブラウザに対し不正なタグを認識させる(XSSする)ことが可能なようです。