从客户端缓存中删除 http 301 重定向
Posted
技术标签:
【中文标题】从客户端缓存中删除 http 301 重定向【英文标题】:Removing http301 redirect from client's cache 【发布时间】:2011-02-04 02:05:52 【问题描述】:我有一个服务器/客户端体系结构,其中客户端在某个主机名、IP 地址和端口处访问 ASP.NET 服务器的服务。我不假思索地登录到服务器并通过 IIS 设置永久 HTTP301 重定向,从该服务到机器通过 IIS 处理的另一个 URL(相同的 IP 和端口),错误地认为它是托管在那里的另一个站点。当客户端以旧主机名访问服务器时,它会缓存永久重定向。现在,即使我删除了重定向,客户端也不再使用旧地址。如何清除客户端的缓存,使其不再存储重定向?
我已经阅读了关于 HTTP301 的永久性的信息,但在这种情况下,应该可以重置单个客户端对错误学习主机名的了解。有什么想法吗?
【问题讨论】:
我们在谈论什么样的客户? 就问题而言,它可以被认为是浏览器通过端口 80 发送 Web 请求。 然后按 F1 并搜索“清除缓存”。 :) @ClaudioRedi 相信我,但我遇到的客户即使是我们制作的最简单的应用程序也几乎无法按照屏幕上的说明进行操作,我们必须为他制作一个 pdf 手册。所以是的,遇到这样的问题很痛苦 【参考方案1】:HTTP 状态码 301 在 RFC 2616 中明确定义为
将来对此的任何引用 资源应该使用其中一种 返回的 URIs
这意味着您必须要求所有客户重新验证资源。如果您有一个可以将更新推送到客户端的系统,也许您可以推送更新以再次使用相同的 URI,但强制重新验证。
您在服务器端所做的任何事情都无济于事 - 事实上,通过删除 IIS 中的永久重定向,您已经采取了所有应采取的措施。
【讨论】:
我只有一个客户,并且可以直接访问它。我在这里谈论的是潜在的客户端修改。 如果您将客户端修改为不遵守 RFC 2616,那么您以后可能会遇到问题。为什么以后不直接使用moved temporary,而不是moved Permanent? 我会,在这个烂摊子之后。但是,客户端必须将重定向信息存储在某处,并且我已经从服务器中删除了 HTTP301 响应,这就是为什么它应该能够在不违反该客户端的 RFC 2616 的情况下被清除的原因。 (我不介意客户端是否存储未来的 HTTP301,因为服务器不再为它们提供服务。) “我已经从服务器上删除了 HTTP301 响应,这就是为什么它应该能够在不违反该客户端的 RFC 2616 的情况下被清除” - 它不会,因为客户端必须记住“任何将来对该资源的引用都应该使用返回的 URI 之一”。如果您使用自己的最终用户浏览器遇到永久重定向,它将存储在您的私人数据缓存中。这个神秘的客户到底是谁?以上是关于从客户端缓存中删除 http 301 重定向的主要内容,如果未能解决你的问题,请参考以下文章