gpt4 book ai didi

microsoft-metro - 如何在 Metro 应用程序中禁用缓存 HTTP GET,我正在使用 IXMLHTTPRequest2

转载 作者:行者123 更新时间:2023-12-04 07:08:49 26 4
gpt4 key购买 nike

我正在执行 http GET 来获取数据,我正在使用 IXMLHTTPRequest2。

如果我 GET url "http://foo.com"(curl "http://foo.com") ,第二次我再次获取这个 url 时,服务器上的内容实际上已经改变了,但是我是什么得到的是缓存的结果。

缓存似乎只尊重 URL,所以如果不同的 header 具有相同的 URL,缓存的结果仍然相同。我试过“缓存控制:无缓存”、“缓存控制:无存储”和“编译指示:无缓存”。 API 不支持它们。

有没有办法关闭缓存或四处走走? (我正在使用的一种绕过方法是在 URL 末尾附加垃圾,但我对此感觉不太好)。

最佳答案

Prashant 在这里回答了我的问题:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1df95d3e-68c9-4351-822a-c2cfde380248/#1df95d3e-68c9-4351-822a-c2cfde380248

您可以通过在请求中设置“If-Modified-Since”HTTP header 并设置过去的时间来强制 XHR 检索最新内容。如果您可以控制服务器响应,则可以发回值为 0 或过去日期的 Expires HTTP 响应 header 。这应该让 XHR 为您检索最新的响应。

您只需执行上述操作之一,无需同时更改客户端和服务器端代码。

客户端代码可以改成这样:

xhr->Open(...)
xhr->SetRequestHeader(L"If-Modified-Since", L"Sat, 01 Jan 2000 00:00:01 GMT");
xhr->Send(...)

如果您的服务器端代码是基于 ASP.net 的,要更改服务器端行为,您可以像这样更改您的响应 header :

Response.Headers.Add("Expires", "0")

关于microsoft-metro - 如何在 Metro 应用程序中禁用缓存 HTTP GET,我正在使用 IXMLHTTPRequest2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com