XMLHTTP发送HTTP请求失败的可能性分析
(二) 一种极端情况
TomoSoft ID Number: Q20011125
Article last modified on 11-25-2001
The information in this article applies to:
Microsoft XML, versions 2.6, 3.0, 3.0 sp1
提要
鉴于使用XMLHTTP对象和ServerXMLHTTP对象时,牵涉面比较广。所以为了更好地驾驭这两个对象,我们应该更多地关注以下关键词:
OWA、Exchange 2000 Server、IE Security Setting和Proxy Setting。
本文继续谈及访问被拒绝的一种可能性。
通过这种极端情况,可以说明,有许多问题的产生可能和你所使用的工具无关,不是你的错。
“Access Is Denied”
第一种情况:
我们先讲一个关于OWA的故事。
现在你刚装了Exchange 200 Server。在IE中,你键入如下形式的URL:
http://<servername>.<company>.com/exchange/<username>
于是出现了OWA的访问界面。
你点击“Public Folders”的按钮试图去访问Exchange的公共文件夹。
但是返回了这样的错误信息:
“Access is denied. Your browser security settings will not allow access to this folder from this page.”
M 这就是因为你使用了Fully Qualified Domain Name(FQDN)!
当你使用FQDN去访问OWA时,你的树状图的页面连的是<ServerName>.<Company>.com,而在此页上公共文件夹的位置却被设为了<ServerName>。
所以,我们的IE浏览器就自作主张地把这种访问解释为了:跨域访问(Cross-Domain)! L
而缺省情况下,IE的安全设置中,是禁止在Internet中进行跨域通信的!L
故事讲到这里,你一定知道在什么情况下,用XMLHTTP对象提交HTTP操作会遭遇到访问禁止的待遇了吧。
我们假设你这么做,你当前出发的地方是被设置为<ServerName>的宿主,但是你却想去访问<ServerName>.<company>.com的资源,或者向它提交HTTP请求。于是你就会得到“访问禁止”的反馈。反过来,也一样。
(这里的假设我并没有试验过,请大家自行验证。)
解决的方法有三个:
Ð 第一个:
最简单的办法就是,把所有这些访问形式统一起来,要么<ServerName>,要么<ServerName>.<Company>.com。
对于刚才讲过的故事,我们只需要用http://<ServerName>.<Company>.com/public去访问公共文件夹即可。不过对于这个Bug,大家可能无法重现了,因为Exchange 2000的SP1已经解决了它。
Ð 第二个:
安装你的Exchange 2000 Server为前端-后端的形式,这样前端服务器可以接受客户端的请求,并将其代理到适当的后端服务器上。
Ð 第三个:
如果你当前正在使用SSL,你就可以在IE的设置中作以下操作,以允许你的站点能够跨域访问:
1. 在Internet选项卡上,查看Security页,点击“信任站点”,再点击“站点”;
2. 把你的站点加入进去;
点击“自定义级别”,在“其他”下的“通过域访问数据资源”下,选中“启用”(原先肯定是禁用的),如下图所示: