HttpRequest不尊重请求页面的标题代码

时间:2011-04-01 00:10:33

标签: php httprequest

我在代理上使用HttpRequest类来调用API。如果内容未被修改,我对API上的缓存进行了修改以抛出304,以便发出请求的用户可以利用缓存。

API抛出标题:

header('HTTP/1.1 304 Not Modified');

我已经确认这是通过检查标题来实现的;在firefox中,ctrl + shift + r将始终返回200,一个200后的ctrl + r将始终导致304.但是,在代理端,HttpRequest对象总是返回200.我甚至尝试修改API所以无论如何,它总是抛出304,但代理仍然会产生200。

我怎样才能让它尊重API抛出的304,所以我也可以从代理中抛出304?

1 个答案:

答案 0 :(得分:0)

如果API服务器中的缓存逻辑是正确的,那么在发送这样的条件请求时,你应该只获得304:

$last_request = time() - 60;
    // should be an actual timestamp of cached data!
$last_date = gmdate("D, d M Y H:i:s T", $last_request);

$request = new HttpRequest($url, $method_type);
$request->setHeaders(array('If-Unmodified-Since' => $last_date));
$request->send();