我正在尝试记录几个内部网站以及我们的SharePoint网站的用户活动。我使用JavaScript对ashx页面(HTTPHandler)进行调用(GET),返回1x1不可见的GIF。 HTTPHandler获取引用URL,浏览器信息,IP地址,动作(作为QueryString发送)和(我正在使用的部分)用户名。使用HTTPHandler中的context.User.Identity收集用户名,并在IIS 6中启用“集成Windows身份验证”。以下是js的日志记录部分:
logAction: function(action) {
try {
var i = new Image(1, 1);
i.src = "http://intranet/tracker/urchin.ashx?action=" + action;
} catch (e) {
//alert(e);
}
使用jQuery,我添加了处理程序,用于按钮点击,链接点击和“卸载”调用ashx文件并传递执行的操作。 (在页面加载时也会调用它。)
所有这一切都运行得很好,或者我认为......事实证明,如果用户第一次打开其中一个页面,如果它与HTTPHandler不在同一个域中,我就错过了初始页面加载事件。使用Fiddler我可以看到页面的NTLM周期(401.2,401.1,200),但是对于ashx只有401.2。当对HTTPHandler的调用是跨域的时,浏览器似乎不会发送用户凭据。用户访问的下一页会被正确记录,但不记录第一页。
以下是我们的域名:
我的设计有问题,还是仅仅是网络浏览器的安全性?谢谢!
答案 0 :(得分:1)
您可能希望看到:http://developer.yahoo.com/javascript/howto-proxy.html
关于你所遇到的问题(我现在无法给你一个精确的技术答案)可能不是现场的,但上面的链接会警告你必须出现的问题/设计决定/安全考虑因素了解你想要实现的目标。你是对的,有一个浏览器安全问题,我知道的很多。
也可以在谷歌搜索跨域ajax代理。那里有一些很好的阅读!
祝你好运!