Microsoft.XMLHTTP - 如何防止缓存?

时间:2013-05-17 16:46:51

标签: xmlhttprequest windows-desktop-gadgets

所以我想通过使用Microsoft.XMLHTTP ActiveXObject来检索一些经常从Windows小工具更改的JSON数据。问题是它返回页面的缓存版本而不是请求新版本。

我无法控制服务器,我无法使用通常的黑客发送额外参数,因为如果我发送任何参数,服务器会返回错误。

我已经将这个搜索到了死亡,最好的信息在this Stackoverflow问题中,但这些答案都不适用于我;我无法找到从小工具Javascript使用ServerXMLHTTP的方法。如何使用ServerXMLHTTP,或者以不同于在URL中添加随机参数的方式阻止缓存?

3 个答案:

答案 0 :(得分:3)

尝试使用POST而不是GET

request = new ActiveXObject("Microsoft.XMLHTTP");
request.onreadystatechange = callback;
request.open("POST", "server.php", true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send();

的引用: Prevent Chrome from caching AJAX requests 和我自己的经历。

答案 1 :(得分:0)

您是否可以在网址末尾添加随机元素? 你的http://acme.com/someapp/rest/someendpointurl?randombit=20171701143500

答案 2 :(得分:0)

在VBA中添加一个随机数对我有用,例如

myURL= "http://acme.com/someapp/rest/someendpointurl?randombit=" & Rnd()

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "username", "password"
WinHttpReq.send

myURL = WinHttpReq.responseBody
If WinHttpReq.status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.responseBody
    oStream.SaveToFile saveToPath, 2 ' 1 = no overwrite, 2 = overwrite
    oStream.Close
End If

谢谢Sean Cull,您的解决方案在VBA的背景下对我有用。

(遗憾的是我不允许投票,所以在这里重新发布以供参考)