使用304状态代码强制响应

时间:2013-10-30 07:44:18

标签: http if-modified-since

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您组成自己的日期字符串,无论实际日期是什么,您都可能得到200响应。