Вызвать ответ с кодом состояния 304
Я пытаюсь форсировать ответ с 304 неизмененным кодом состояния, используя telnet. Я не вижу проблем с моими командами, но у меня все еще статус 200 OK.
telnet lemonde.fr 80
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
From: yahoo.com
Accept: text/html,text/plain,application/*
Host: www.lemonde.fr
If-Modified-Since: Wed, 19 Oct 2015 10:50:00 GMT
<linefeed>
HTTP/1.1 200 OK
Server: Apache
Last-Modified: Wed, 30 Oct 2013 00:32:31 GMT
Vary: Accept-Encoding
X-Server: noisy
Cache-Control: max-age=60
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 30 Oct 2013 00:36:11 GMT
X-Varnish: 391424540 391424396
Age: 13
Via: 1.1 varnish
X-Varnish-Cache: HIT
X-Varnish-Server: noisy.lemonde.fr
1 ответ
Расчет разницы дат довольно запутан, учитывая, что спецификация HTTP допускает три совершенно разных формата даты.
Какой самый простой способ для браузера создать заголовок IMS (If-Modified-Since)? Почему, вы отправляете обратно ту же самую строку, которую получили от сервера!
Имея это в виду, какой самый простой способ для сервера определить, как ответить на запрос IMS? Сделайте простое сравнение строк между IMS и заголовком Last-Modified! Если они совпадают, отправьте 304. Если нет, отправьте все 200.
Если вы составите свою собственную строку даты, вы, скорее всего, получите 200 ответов, независимо от того, какие даты являются действительными.