• ベストアンサー

PerlでIf-Modified-Since取得

Perlで書いているCGIで、 HTTP リクエストヘッダのIf-Modified-Sinceを取得したいのですが、 %ENVには入ってこないようです。 取得する方法があれば、教えて下さい。 ・.htaccess にSetEnvなどで記述することでできそうですが、方法が分かりません。 ・HTTP Request Header 全体を取得する方法でも結構です。 よろしくお願い致します。 環境は、さくらインターネットのレンタルサーバーのApacheです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.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

amadaira
質問者

お礼

前半が正に的を射てらっしゃいますが、後半の貴重な情報も含め、完璧です。 恐れ入りやした。

関連するQ&A