【发布时间】:2020-04-20 06:21:05
【问题描述】:
这个问题与this post 非常相似,只是专门针对清除IE11 浏览器中的缓存。
无论我如何清除历史记录/缓存(清除历史记录,Network Tab > clear cache,Network tab > always refresh from server),当我提交新请求时,我都会看到带有此消息的响应 Received (from cache) (This resource was loaded from the cache and it was not affected by network latency)。
我应该补充一点,该路由应该是一个 POST 请求,但它作为 GET 请求保存在浏览器中。这只发生在 IE11 浏览器中。缺少 req/res 标头。
在两个不同的情况下,它实际上是否通过网络正确地作为 POST 发出请求,但这是我尝试过的大约 100 次。我不知道为什么它适用于这两个特定实例。但是每个后续请求都会被缓存拦截并返回一个没有标头的 200 GET。这在 Chrome/Firefox 中总是可以正常工作(没有缓存,奇怪的网络响应)。
所以这实际上是两个不同的问题。 1. POST 被保存为 IE11 的 GET 和 2. 清除 IE11 的请求缓存不起作用。
我想避免添加headers to solve this issue,我主要想找到一种方法来清除 IE11 浏览器缓存,因为看起来初始 POST 请求有效,只是任何后续请求都使用保存的缓存(作为 GET因为某些原因)。也就是说,找出并修复 POST 被缓存为 GET 的原因也会为我提供一条前进的道路。
使用 whatwg-fetch 填充 IE 并使用 babel-polyfill 填充 Promises。
** 尝试通过开发控制台发送请求。 chrome/IE 浏览器之间的结果相同(在 Chrome 中有效,在 IE SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3. 中出现错误)
这是我提出的要求:
var options = {
"body": "{\"email\":\"myemail@myemail.com\",\"pass\":\"mypassword\"}",
"credentials": "include",
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"method": "POST",
"mode": "cors"
}
fetch("https://locally-running-host:9876/some-route/logmein", options).then(function(response) { return response.json() }).then(function(myJson) { console.log(myJson)})
跟进 - 已解决 - 这是一个证书问题,主要是由于我的工作站缺乏权限和我的工作网络受限所致。两者都通过仅通过@deepak-msft 干扰权限和重置事物来解决
【问题讨论】:
-
您是否尝试在任何其他使用 IE 11 的机器上检查此问题?如果不是,您可以检查以验证此问题是否与特定机器有关。如果它在另一台装有 IE 11 的机器上正常工作,那么您可以尝试重置您的 IE 浏览器。检查您是否正在使用 IE 浏览器的最新更新。让我们知道您的测试结果。
-
@Deepak-MSFT - 是否有“重置”IE 浏览器的最佳方法?这是否涉及卸载/重新安装或只是 Internet 选项 > 高级中的“重置 IE 设置”?
-
您一直在暗示“请求被保存为 GET”,但这没有多大意义。当然请求没有被缓存; content / 资源是。那里没有 GET 与 POST 的概念。奇怪的是,您永远不应该获得 POST 请求的缓存结果。这太荒谬了(并且违反了 HTTP 规范)。响应的标头是什么?
-
并且清除缓存不是解决方案,而是一种破解;正确识别不可缓存的资源是解决方案。
标签: internet-explorer internet-explorer-11 browser-cache