如何使用HTTPHandler记录跨域Intranet流量(包括用户名)?

时间:2008-11-13 21:02:43

标签: c# asp.net javascript security iis

我正在尝试记录几个内部网站以及我们的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的调用是跨域的时,浏览器似乎不会发送用户凭据。用户访问的下一页会被正确记录,但不记录第一页。

以下是我们的域名:

我的设计有问题,还是仅仅是网络浏览器的安全性?谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望看到:http://developer.yahoo.com/javascript/howto-proxy.html

关于你所遇到的问题(我现在无法给你一个精确的技术答案)可能不是现场的,但上面的链接会警告你必须出现的问题/设计决定/安全考虑因素了解你想要实现的目标。你是对的,有一个浏览器安全问题,我知道的很多。

也可以在谷歌搜索跨域ajax代理。那里有一些很好的阅读!

祝你好运!