Цитирование из RFC 2616 (HTTP 1.1) :
... если задано «*» и для этого ресурса существует какой-либо текущий объект, то сервер НЕ ДОЛЖЕН выполнять запрошенный метод, если только это не требуется, поскольку дата модификации ресурса не соответствует дате, указанной в If- Поле заголовка Modified-Since в запросе.
Далее в RFC говорится, что вместо выполнения запроса серверы должны ответить 304 (без изменений) для запросов GET и HEAD, и что они должны ответить 412 (предварительное условие не выполнено) для всех других типов запросов. Но это только в том случае, если на сервере действительно есть какая-то версия запрошенного ресурса. Если у вас нет сущностей, то должен обработать запрос (вероятно, с 404, поскольку у вас ничего нет).
Чтобы обработать запрос, сначала выясните, что будет делать сервер, если бы этого заголовка не было . Если результат этого запроса не будет 2xx или 304, то обработайте запрос как обычно. Но если результат запроса будет равным 2xx или 304, тогда обработайте случай If-None-Modified. Когда это звезда, тогда просто немедленно верните 304 (если не превзойдено If-Modified-Since). Если это один или несколько тегов сущностей, проверьте, совпадает ли какой-либо из этих тегов с тегом того, что вы планировали использовать в качестве ответа. Если есть совпадение, верните 304; если нет совпадения, подайте его, как обычно.
Позже в RFC есть еще:
Значение "If-None-Match: *" заключается в том, что метод НЕ ДОЛЖЕН выполняться, если представление выбрано сервером происхождения (или кэшем, возможно, с использованием механизма Vary, см. Раздел 14.44 ) существует, и СЛЕДУЕТ выполнять, если представление не существует. Эта функция предназначена для предотвращения гонок между операциями PUT.
То есть, звезда позволяет клиенту сказать: «НЕ ЗАДЕРЖИВАЙТЕ этот файл, если существует любая версия этого файла».