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

发布于 2024-10-28 07:56:06 字数 373 浏览 1 评论 0原文

我在代理上使用 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?

I'm using the HttpRequest class on a proxy to call an API. I have modifications for caching on the API to throw a 304 if the content has not been modified so that the user making the request can utilize caching.

The API throws a header:

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

I've confirmed that this is working by inspecting the headers; in firefox a ctrl+shift+r will always return a 200, a ctrl+r after a 200 will always result in the 304. However, on the proxy side the HttpRequest object always returns 200. I've even tried modifying the API so it always throws the 304 no matter what but the proxy still yields 200.

How can I get it to respect the 304 being thrown by the API so I can throw the 304 from the proxy as well?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨后咖啡店 2024-11-04 07:56:06

如果 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();

If your caching logic in the API server is correct, then you should really only get a 304 when sending a conditional request like this:

$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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文