【问题标题】:Microsoft.XMLHTTP - how to prevent caching?Microsoft.XMLHTTP - 如何防止缓存?
【发布时间】:2013-05-17 16:46:50
【问题描述】:

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

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

我已经用谷歌搜索了这个问题,最好的信息在this Stackoverflow 问题中,但没有一个答案对我有用;我一直无法从小工具 Javascript 中找到使用 ServerXMLHTTP 的方法。除了在 URL 中添加随机参数之外,我该如何使用 ServerXMLHTTP,或者阻止缓存?

【问题讨论】:

    标签: xmlhttprequest windows-desktop-gadgets


    【解决方案1】:

    尝试使用 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 和我自己的经验。

    【讨论】:

    • 这实际上是一个好主意,因为 POST 通常不会缓存,而 GET 通常会缓存。不幸的是,在我的情况下,服务器不接受 POST 请求。 :(
    • 我使用了 jQuery $.get 并且很困惑为什么它不刷新。我更改为 $.post 并开始工作,因此我可以确认它正在工作。感谢您的回答。
    【解决方案2】:

    你不能在你的 URL 的末尾添加一个随机元素吗? 你的http://acme.com/someapp/rest/someendpointurl?randombit=20171701143500

    【讨论】:

    • 不,我正在实现的服务会验证所有参数并在随机参数上返回错误,并且我无法控制服务 API。
    【解决方案3】:

    在 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 环境中为我工作。

    (不好意思,我不允许投票,所以在这里转发以供参考)

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2014-04-21
      相关资源
      最近更新 更多