WinInetライブラリのHttpQueryInfo関数を使ってWebサイトの最終更新日時を取得しようとしたんですけれども、
第二引数をHTTP_QUERY_LAST_MODIFIEDにすると、ちゃんと最終更新日時を返すサイトと、ERROR_HTTP_HEADER_NOT_FOUNDを返すサイトの2種類が出てきて、困っています。
どうすれば全てのサイトから最終更新日時を取得できるようになりますか?教えていただければ幸いです。
Last-Modifiedフィールドは必須ではないですから,付いていないリソースもあるでしょう。
例えば,このページは返しません。
レスポンスヘッダは次のようでした。
HTTP/1.1 200 OK
Server: ZWS
Date: Fri, 02 Oct 2009 16:35:41 GMT
Connection: close
Content-Type: text/html
ここような動的なページは,だいたいLast-Modifiedを返しません。
RFC 2616の14.29でも,
> HTTP/1.1 servers SHOULD send Last-Modified whenever feasible.
つまり,可能ならいつでも送るべきとは書いているものの,
常に送るべきとは書いていません。
このようなリソースには,そもそも「最終更新日時」という概念が存在しないと考えられます。
そのようなものから取得しようがないので,諦めて送信日時あたりで代用するのが現実的だと思います。