David Basarab Asked: 2009-05-15 09:49:57 +0800 CST2009-05-15 09:49:57 +0800 CST 2009-05-15 09:49:57 +0800 CST 如何防止 IIS 中的条件 GET? 772 我被要求找到一种方法来阻止 IIS 进行有条件的GETS(因此,Web 服务器将始终返回 200 OK 或错误,如果有的话)。有没有办法做到这一点? 我在 Windows Sever 2003 中使用 IIS 6。 iis 3 个回答 Voted Cheeso 2009-07-15T19:06:24+08:002009-07-15T19:06:24+08:00 IIRF是 IIS 的免费 URL 重写器,可以使用 RewriteHeader 指令重写标头。它看起来像这样: RewriteCond %{HTTP_IF_MODIFIED_SINCE} ^.+$ RewriteHeader HTTP_IF_MODIFIED_SINCE: .* $1 这基本上是说,如果“If-Modified-Since”标头不为空,请将其重写为没有任何内容。您必须对其他标题有类似的规则。 在线查看IIRF 的文档。 Best Answer spoulson 2009-05-15T10:01:40+08:002009-05-15T10:01:40+08:00 条件 GET 是HTTP 1.1 标准的一部分。IIS 不能专门禁用它,但您可以编写一个 ISAPI 过滤器来去除条件请求标头:If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match、If-Range 我不知道有一个现成的包可以做到这一点,所以你可能不得不自己动手。 Jack B Nimble 2009-05-18T22:07:20+08:002009-05-18T22:07:20+08:00 这篇kb 文章描述了如何在 iis 5 和 iis 6 中构造(或不构造)条件获取。您可以设置两个 Web 服务器并强制它们的 ETag 值不同,然后确保每个请求在两个服务器之间来回反弹。这样你应该总是得到 200 OK 响应,并且浏览器不会使用缓存。 显然这对性能不利,因为它使 Web 服务器始终为资源提供服务,即使它不需要。
IIRF是 IIS 的免费 URL 重写器,可以使用 RewriteHeader 指令重写标头。它看起来像这样:
这基本上是说,如果“If-Modified-Since”标头不为空,请将其重写为没有任何内容。您必须对其他标题有类似的规则。
在线查看IIRF 的文档。
条件 GET 是HTTP 1.1 标准的一部分。IIS 不能专门禁用它,但您可以编写一个 ISAPI 过滤器来去除条件请求标头:If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match、If-Range
我不知道有一个现成的包可以做到这一点,所以你可能不得不自己动手。
这篇kb 文章描述了如何在 iis 5 和 iis 6 中构造(或不构造)条件获取。您可以设置两个 Web 服务器并强制它们的 ETag 值不同,然后确保每个请求在两个服务器之间来回反弹。这样你应该总是得到 200 OK 响应,并且浏览器不会使用缓存。
显然这对性能不利,因为它使 Web 服务器始终为资源提供服务,即使它不需要。