我正在尝试使用telnet强制使用304未修改的状态代码进行响应。我没有看到我的命令有问题,但我仍然有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
答案 0 :(得分:0)
考虑到HTTP规范允许三种完全不同的日期格式,计算日期差异相当复杂。
浏览器构建IMS(If-Modified-Since)标头的最简单方法是什么?为什么,你发回与从服务器收到的完全相同的字符串!
考虑到这一点,服务器确定如何响应IMS请求的最简单方法是什么?在IMS和Last-Modified标头之间进行简单的字符串比较!如果匹配,则发送304.如果不匹配,则发送完整的200。
如果您组成自己的日期字符串,无论实际日期是什么,您都可能得到200响应。