0

我正在尝试使用 telnet 强制响应 304 not modified 状态代码。我没有看到我的命令有问题,但我仍然有 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
4

1 回答 1

0

考虑到 HTTP 规范允许三种截然不同的日期格式,计算日期差异相当复杂。

浏览器构造 IMS(If-Modified-Since)标头的最简单方法是什么?为什么,您发回的字符串与您从服务器收到的完全相同!

考虑到这一点,服务器确定如何响应 IMS 请求的最简单方法是什么?在 IMS 和 Last-Modified 标头之间进行简单的字符串比较!如果它们匹配,则发送 304。如果不匹配,则发送完整的 200。

如果您编写自己的日期字符串,无论实际日期是什么,您都可能会收到 200 响应。

于 2014-03-31T06:17:57.677 回答