35 実装 /* If-None-Match ヘッダが存在し、その値が "*" であるか、 * 実体の Etag が値のいずれかに一致する場合は、失敗。 * GETかHEADのとき、失敗というのは、304(Not Modified)。 * その他のメソッドのとき、失敗というのは、412(Precondition Failed) */ if_nonematch = ap_table_get(r->headers_in, "If-None-Match"); if (if_nonematch != NULL) { if (r->method_number == M_GET) { if (if_nonematch[0] == '*') return HTTP_NOT_MODIFIED; ・ ・ ・ ・ ・ } else if (if_nonematch[0] == '*' || (etag != NULL && ap_find_list_item(r->pool, if_nonematch, etag))) { return HTTP_PRECONDITION_FAILED; } } else if ((r->method_number == M_GET) && ((if_modified_since = ・ ・ ・ ・ ・) != NULL)) { /* If-Modified-Since ヘッダが存在し、GETかHEADのとき、 * ヘッダによって指定された日時から変更されていない場合は、304(Not Modified) */ if ((ims >= mtime) && (ims <= r->request_time)) { return HTTP_NOT_MODIFIED; } } }