Asp.net ajax 在ASP.Net中从客户端访问信息

Asp.net ajax 在ASP.Net中从客户端访问信息,asp.net-ajax,client-side,Asp.net Ajax,Client Side,我有一个ASP.Net网站,在那里我想能够知道以下关于浏览我网站的人的事情 已登录操作系统的用户名 精确的操作系统(操作系统的类型-Windos、Mac等:操作系统的版本) Mac地址 客户端机器的IP地址 我的网站是一个高度安全的网站,如果需要访问网站,我可以让用户访问所有activex和/或一些小程序 请帮我找到最好的方法。1-登录操作系统的用户名 这仅在使用WIndows窗体作为身份验证方法时可用,如果使用窗体,则可以通过其登录帐户轻松获取其名称/用户 2-精确的操作系统(操作系统类型-W

我有一个ASP.Net网站,在那里我想能够知道以下关于浏览我网站的人的事情

  • 已登录操作系统的用户名
  • 精确的操作系统(操作系统的类型-Windos、Mac等:操作系统的版本)
  • Mac地址
  • 客户端机器的IP地址
  • 我的网站是一个高度安全的网站,如果需要访问网站,我可以让用户访问所有activex和/或一些小程序


    请帮我找到最好的方法。

    1-登录操作系统的用户名

    这仅在使用WIndows窗体作为身份验证方法时可用,如果使用窗体,则可以通过其登录帐户轻松获取其名称/用户

    2-精确的操作系统(操作系统类型-Windos、Mac等:操作系统版本)

    我们称之为,您可以在javascript中使用:

    navigator.userAgent
    
    3-Mac地址

    您只能获取您自己的服务器的Mac地址,即您托管网站的服务器的Mac地址,并且您可以获取服务器所拥有的网络设备的数量,请记住,Mac地址不是唯一的

    4-客户端计算机的IP地址

    只有javascript无法实现这一点,您需要使用您的编程语言来获得真正的IP地址:

    string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if(ip == "") { 
        ip = Request.ServerVariables["REMOTE_ADDR"]; 
    }
    
    总之,使用jQuery非常简单:

    <%
        string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        if(ip == "") { ip = Request.ServerVariables["REMOTE_ADDR"]; }
    %>
    <script type="text/javascript">
    
      $(function() {
    
        var ipAddress = '<% = ip %>',
            browser = navigator.userAgent,
            username = <% = Session["username"] %>;
    
        // now send the data back to your server, if using jQuery, just do:
        $.get("/login-user.aspx", { 
                ip: ipAddress, 
                 browser: browser, 
                 user: username 
              }, function(data) {
                 // use this if you return anything as a response             
              });
       });    
    </script>
    
    
    $(函数(){
    变量ipAddress=“”,
    browser=navigator.userAgent,
    用户名=;
    //现在将数据发送回服务器,如果使用jQuery,只需执行以下操作:
    $.get(“/login user.aspx”,{
    ip:ip地址,
    浏览器:浏览器,
    用户:用户名
    },函数(数据){
    //如果您返回任何内容作为响应,请使用此选项
    });
    });    
    

    然后,您可以使用API解析用户代理字符串,或使用
    导航器
    对象从浏览器(或任何第三方库)获取所需内容。

    在您对
    登录操作系统用户名的响应中,真实获取此信息的唯一方法是使用NTLM作为服务器身份验证,并使两台计算机位于同一域上。即使启用了NTLM,如果机器位于单独的域上,将显示单独的身份验证框并提供新凭据。