- ベストアンサー
PerlでIf-Modified-Since取得
Perlで書いているCGIで、 HTTP リクエストヘッダのIf-Modified-Sinceを取得したいのですが、 %ENVには入ってこないようです。 取得する方法があれば、教えて下さい。 ・.htaccess にSetEnvなどで記述することでできそうですが、方法が分かりません。 ・HTTP Request Header 全体を取得する方法でも結構です。 よろしくお願い致します。 環境は、さくらインターネットのレンタルサーバーのApacheです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
どうしてもIf-Modifed-Sinceが知りたい場合は、NPHスクリプトを使ってください。 通常CGIでは、Last-Modifed を出力しておけば、If-Modifed-Sinceなリクエストの場合、 CGIが出力したLast-Modifedを元に、Apache側で判定して、全データを返すか「304 Not Modified」を返すかを切り替えてくれます。 CGI側でIf-Modifed-Sinceヘッダの内容を知る必要はありません。 そもそも、通常のCGIでは、出力ステータスを変えられない(「304 Not Modified」を返すことができない)ので、If-Modifed-Since を取得出来ても意味もありません。 一方、NPHスクリプトの場合、ステータス出力などもすべてCGI側で処理する必要がありますが、 そのおかげで必要に応じて 304 を返すことも出来るようになります。 そして、NPHスクリプトであれば、リクエストヘッダの全データが引き渡されますので、If-Modified-Since も、$ENV{HTTP_IF_MODIFIED_SINCE} で参照できます。 http://www.kishiro.com/apache/nph_script.html
お礼
前半が正に的を射てらっしゃいますが、後半の貴重な情報も含め、完璧です。 恐れ入りやした。