IIS是否内置了一个秘密的,未logging的,透明的,区分大小写的代理?
Web服务器上存在一个文件:
GET http://www.stackoverflow.com/javascript/ModifyQuoteArea.js HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: en-US User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: www.stackoverflow.com HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 29246 Date: Mon, 07 Mar 2011 14:20:07 GMT Content-Type: application/x-javascript ETag: "5a0a6178edacb1:1c51" Server: Microsoft-IIS/6.0 Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT Accept-Ranges: bytes X-Powered-By: ASP.NET ...
问题是对文件所做的更改不会得到服务, 旧的版本 (即去年2月份)版本一直在服务:
HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 29246 Date: Mon, 07 Mar 2011 14:23:07 GMT Content-Type: application/x-javascript ETag: "5a0a6178edacb1:1c51" Server: Microsoft-IIS/6.0 Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT Accept-Ranges: bytes X-Powered-By: ASP.NET ...
同样的旧文件得到了服务,即使我们已经:
该文件的请求不会出现在IIS日志中(例如C:\WINNT\System32\LogFiles\W3SVC7\ )
而这只发生在外面(即互联网)。 如果您在服务器上本地发出请求,则您将:
但是,如果我改变请求资源的情况下 ,即:
GET http://www.stackoverflow.com/javascript/MoDiFyQuOtEArEa.js HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: en-US User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: www.stackoverflow.com
注意:
MoDiFyQuOtEArEa.jsModifyQuoteArea.js
然后我得到正确的文件(或得到404,如我所料,如果文件被重命名或删除)。
但是,直到我改变我要求的文件的情况下,文件的任何后续更改将不会显示。
当网站提供一个神秘的caching文件时,IIS日志显示没有活动。 请求其他(即ASP)文件(或使用change-requested-resource-case-to-bypass-transparent-cache技巧)在IIS日志中显示,并显示正确的源客户端IP地址(即不是一些神秘的中间代理地址)。
这听起来不像微软或IIS所做的: – 一个透明的代理? – 案例敏感? – 没有logging? 幸存重启的IIS? – 在caching中生存几个小时?
不能相信我们的客户的IIS正在做这些事情。 我假设有一些其他透明代理在IIS前面。
或者,IIS有一个:
代理,caching内容至less7小时?
如果请求没有显示在IIS日志中,则由某处的caching提供服务,无论是客户端的本地caching还是请求链中某处的caching(代理)。
查看客户端上的请求的响应头,并查看是否有Via:头。 Via:头指示链中有一个代理,链中每个代理应该有一个头(假设代理正在运行)。 如果您看到一个或多个内容,则从caching中提供内容是一个很好的机会。
在我戴上锡纸帽并宣布必须有一个没有人知道的超级秘密代理之前,我会要求客户检查他们的浏览器设置。 如果他们使用IE浏览器,这听起来有点像“检查更新版本的存储页面:从不”(也可能是“每次我启动IE”,如果客户端没有重新启动IE作为故障排除的一部分)。
尝试curl -v http://www.stackoverflow.com/javascript/ModifyQuoteArea.js ,如果您仍然看到旧版本的客户端到服务器的path中configuration不正确的/不符合HTTP的caching。 如果你看到当前的版本,你的浏览器将被指责
所以答案是“它不应该”。
以问题forms回答更长的问题:您在此处显示的代理行为非常类似于代理,因为主机名是请求的一部分。 你是否像一个代理对待服务器,或者你只是从代理捕获stream量?
通常,当客户端请求内容时,他们请求一个相对URL并提供一个Host:头。
只有当目标被configuration为代理时 ,客户端才会向http://fullsomethingname.fqdn.com请求代理服务器,并且必须基于此来debugging奇怪的行为。
所以,从这个angular度来看,我们可以保证说你在这个组合中有一个代理。 作为代理人的提琴手算得很多。
我build议像Ochoto一样,尝试使用Curl或WFETCH或WGET或任何其他简单不间断的WinInet或IE的浏览器设置或代理caching客户端来完全确定。
其实,如果你想绝对确定:
如果你真的想要的话,你也可以使用HTTP.SYS跟踪,只是为了好的措施。
如果
那么, 那么 , 那么 ,恩,抱歉,我已经失去了我的思路。