諸注意






聞きかじりの情報ですが、CGI一般で知らないと「困る」事柄です。




ファイルアップロード
 
一般
<TEXTAREA>があるときはGETは使えない
    Internet Explorerは漢字や改行などの通常 % でエスケープして送る文字をそのまま送る。
    従ってメソッドがGETのとき <TEXTAREA> などで改行を入力されるとその改行がそのまま送られ、改行より後のデータはCGIに渡らない。
    <TEXTAREA>を含むときはメソッドをPOSTにしないとIEでうまく動作しない。
CGIはGIFアニメーションを返せない
    POSTされたCGIがcontent-typeをimage/gifにしてGIFアニメーションを返すとNetscapeではアニメーションが1回繰り返されただけで止まってしまう。
    HTMLを返し<IMG SRC>でGIFアニメーションをHTMLの中に貼った場合は問題無くアニメーションする。

キャッシュ関係
キャッシュで正しく返せない
    応答のMIMEタイプが"image/*"であるとき Netscape は POST でデータを送った CGI からの応答をキャッシュするので異なるデータを CGI に POST で送っても一度目の CGI からの応答が表示される。
    RFCではPOSTの応答はキャッシュするべきでは無いと書いてある。
    GETでデータを送れば異なるデータではURLも異なるので一度目の応答が表示されることはない。
no-cache でもキャッシュされてしまう。
    Pragma: no-cache, Cache-Control: no-cacheと書くことでページをキャッシュされないようにできる。しかしNetscapeで画像を読むときはこれらのヘッダーを付けてもキャッシュされる。

HTTPリダイレクト関連
CGIから "Location: http://www.tsden.org/foo.html\n\n" とサーバーにプリントすることでブラウザにhttp://www.tsden.org/foo.htmlを見に行かせることができる。

Netscape 関係のリダイレクト
    POSTしたCGIからリダイレクト応答があった場合リダイレクト先のURLにPOSTするべきとRFCにあるがNetscapeはメソッドをGETに変える。
    IE 4.0 Preview2でHTTP/1.1を使っているときはリダイレクトが動作しない。