有人要求我找到一种方法来阻止 IIS 进行条件 GETS(因此 Web 服务器将始终返回 200 OK 或错误(如果有))。有办法吗?
我在 Windows Sever 2003 中使用 IIS 6。
答案1
条件 GET 是HTTP 1.1 标准。IIS 无法专门禁用它,但您可以编写一个 ISAPI 过滤器来删除条件请求标头:If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match、If-Range
我不知道有现成的软件包可以做到这一点,所以你可能必须自己动手。
答案2
免疫学与免疫学研究所是一款免费的 IIS URL 重写器,可以使用 RewriteHeader 指令重写标头。它看起来类似于以下内容:
RewriteCond %{HTTP_IF_MODIFIED_SINCE} ^.+$
RewriteHeader HTTP_IF_MODIFIED_SINCE: .* $1
基本上说,如果“If-Modified-Since”标头非空,则重写它以使其具有没有什么。您必须对其他标题制定类似的规则。
查看IIRF 文档在线的。
答案3
这知识文章描述了在 iis 5 和 iis 6 中如何构造(或不构造)条件获取。您可以设置两个 Web 服务器并强制它们的 ETag 值不同,然后确保每个请求在两个服务器之间来回传递。这样,您应该始终获得 200 OK 响应,并且浏览器不会使用缓存。
显然这对性能不利,因为它使得 Web 服务器即使在没有必要的情况下也始终提供资源。