我们有一个从Apache服务器托管的PHP站点。
我们有一个从Windows服务器托管的.NET站点。
两者都是内部的,也是在我们的领域内。
当用户访问 PHP 站点时,它会检查您的用户名是否已被会话。 如果没有,它会执行 ajax GET
回发到 .NET"GetUsername.aspx
"页面。 GetUsername.aspx
页面只是输出Request.ServerVariables("LOGON_USER")
.NET 站点要求在 IE 中启用窗口身份验证。 我们所有的用户都使用IE8。
为了使我们的 PHP 站点从 .NET 站点请求数据,必须启用"跨域访问数据"设置...确实如此。
为了使我们的 .NET 站点获取您的用户名,必须启用"启用集成 Windows 身份验证"...确实如此。
.NET 站点和 PHP 站点都是 Intranet 站点。 如果转到"Internet 选项"-"本地 Intranet>">站点"-"高级">,则两个站点都在列表中。
在这一行:xmlhttp.open("GET","http://intranet.MySite.vmv/IS/GetUsername.aspx",false);
出现 JavaScript 错误,并显示消息"错误:访问被拒绝"。
如果我在浏览器网址中键入相同的 .NET 页面......它加载得很好,并显示她的用户名。
令人困惑的是,我们的策略更新(在每次登录时推送)设置了所有这些设置。 我已经验证了上述所有设置在我的浏览器上和在这位用户上一样。 我们俩都在同一个领域内。
其他一些可能导致这种情况的其他设置的任何想法?
谢谢!
编辑
以下是Firebug的结果...似乎不是很有帮助,只是向我展示了我们已经知道的东西。
http://intranet.MyCompany.vmv/IS/GetUsername.aspx
401 Unauthorized
20ms
login (line 103)
HeadersResponseHTML
Response Headers
Content-Length 1656
Content-Type text/html
Date Mon, 09 Apr 2012 16:15:33 GMT
Server Microsoft-IIS/6.0
WWW-Authenticate Negotiate NTLM
X-Powered-By ASP.NET
Request Headers
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Host intranet.MyCompany.vmv
Origin http://192.168.1.2:10078
Referer http://192.168.1.2:10078/login
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
嗯...问题似乎与IE7有关。 不知何故,该用户的版本没有与其他所有人一起升级。 一旦我们将她升级到IE8,它就会按预期工作。