Microsoft.XMLHTTP - как предотвратить кеширование?
Поэтому я хочу получить некоторые данные JSON, которые часто меняются из гаджета Windows, с помощью Microsoft.XMLHTTP ActiveXObject. Проблема в том, что он возвращает кэшированную версию страницы, а не запрашивает новую.
У меня нет контроля над сервером, и я не могу использовать обычный хак для отправки дополнительных параметров, потому что сервер возвращает ошибку, если я отправляю какие-либо параметры.
Я погуглил это до смерти, и лучшая информация в этом вопросе Stackru, но ни один из ответов не работает для меня; Я не смог найти способ использовать ServerXMLHTTP из гаджета Javascript. Как мне использовать ServerXMLHTTP или предотвратить кэширование каким-либо иным способом, кроме добавления случайного параметра в URL?
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();
ссылки: Предотвратить Chrome от кеширования AJAX-запросов и моего собственного опыта.
Добавление случайного числа работало для меня в контексте 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
Спасибо, Шон Калл, ваше решение сработало для меня в контексте VBA.
(жаль, что мне не разрешено голосовать за это, поэтому репост здесь для справки)
Не можете ли вы добавить случайный элемент в конец вашего URL? ваш http://acme.com/someapp/rest/someendpointurl?randombit=20171701143500