代理服务器的设置与IE区域之间有很多令人吃惊的关系.
Local Intranet Zone使用起来很方便, 它使得TCP/IP允许地球另一边的服务器访问起来就向是在访问楼下的服务器一样. . 另一方面, 至于什么才是"local"这个问题就留给了用户或者网络管理员来回答. 很容易去猜想, 当机器是local intranet的时候, IE可以神奇地"知晓", 但事实并不是这样.
因为在其他的安全Zone中, 用户可以手动地添加站点到LIZ(Local Intranet Zone)里, 方式是点击Security Options对话框的Sites按钮. 然而, Local Intranet Zone的Sites按钮提供了其他zone中没有的三个选项.
这里还有一个Advanced 按钮, 允许你手动地添加站点到LIZ中.
第二个选项, "Include all sites that bypass the porxy server", 是虚伪且复杂的. 要清楚的解释它, 理解一下Internet Explorer如何得到代理服务器信息是非常有帮助的.
在IE中的tools菜单, 点击Internet Options, 然后点击Connections选项卡. 如果你通过LAN连接方式连入网络, 点击LAN Settings按钮, 要不就选择你的dialup connection和点击settings按钮.
在configuration对话框, 有三个选项:
这里的第三个选项很直白- 它允许你手动地制定代理服务器的地址和端口号. 如果选择这个选项, 然后点击advanced按钮, 你可以输入一些主机名, 这些主机名应该在Exceptions的掩护下绕过代理. 正如你可能预计的, 如果你输入exceptions并且也配置了local intranet zone的选项为包括"所有绕过代理服务器的站点"的话, 那么那些例外情况下的主机名就会被放到LIZ中了.
第一和第二个选项有很接近的关系, 他们两个会导致Internet Explorer在运行时通过一个脚本的方式来确定代理的配置. 第一个选项使用一种叫做Web Proxy Auto Discovery (WPAD)的算法来定位配置脚本, 而第二个选项总是允许手动配置的脚本位置. 这两者中的任何一个里, Proxy AutoConfiguration (PAC)脚本都是由JavaScript写成的, 并且提供了函数FindProxyForURL的实现(格式是FindProxyForURL(url, host);
). 这个函数在IE浏览器被要求导航到一个URL的时候被调用, 并且目标URL和主机名被同时传入到函数当中来进行评估. 如果函数返回了一个代理字符串(比如,"MyProxy:80”), 那么指定的代理就会被用来处理这个请求. 要不然, 如果函数返回了"DIRECT", 那么原来制定的服务器就会被直接地被联系到, 不使用任何代理.
令人惊奇的行为就包含在上面的解释中了, 当出现问题的时候, 汇报的人不会想到要去检查代理配置.
http://payroll.internal.example.com/
), 并且用户希望这个站点在LIZ Zone里(Intranet), 他们没有配置代理服务器, 并且在使用服务器的fully-qualified domain name(FQDN)(全限定域名)来访问, 带点点还有全部其他的信息. 那么浏览器就没有任何线索会让它发现这个站点应该放在"Intranet" zone中.
其他知识
============
什么是无点IP格式(dotless IP address)?
----------------------------------------
Internet addresses are typically provided using a "dotted" address format. For instance, the address of the Microsoft web site in dotted format is http://207.46.131.13. However, it's possible to use other formats. For instance, you could also use a "dotless" format, in which the bit sequence corresponding to the dotted address is treated as a numerical value. For instance, the Microsoft web site's address could be rendered as http://031713501415. These are equivalent representations, and both are valid ways to refer to the web site.
A vulnerability occurs because, if an Internet address is provided in dotless form and is malformed in particular way, IE uses the wrong Security Zone to process the web pages at the site.
判断是否是Intranet Zone的总结
=============
上面的文章最后一段说的模模糊糊的, 请结合下面的总结再看一下"令人惊奇"的段落, 就清楚了. 为了尊重原文, 加上水平有限所以才翻译成了那种样子. 呵呵.
1. 先看地址中有没有".", 有就会被默认地认为属于Internet Zone. 除非站点被添加到了绕过代理(bypass proxy)列表.
2. 剩下没"."的, 就被默认地认为属于Intranet Zone. 除非站点被定义为需要经过代理.
[译者我的疑问]
=============
在IE7中添加了一个checkbox, 就是"automatically detect intranet network". 这篇文章中没有提到这个选项的行为. 有谁知道, 可以帮忙解答一下呢?
原文: http://msdn.microsoft.com/en-us/library/bb250483%28VS.85%29.aspx