如何防止 IIS 中的条件 GET?

如何防止 IIS 中的条件 GET?

有人要求我找到一种方法来阻止 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 服务器即使在没有必要的情况下也始终提供资源。

相关内容