【问题标题】:Read Session Id using Javascript使用 Javascript 读取会话 ID
【发布时间】:2018-04-16 15:59:06
【问题描述】:

是否可以使用javascript读取浏览器会话ID?

【问题讨论】:

  • 这个问题是如何得到这些答案的,即使它没有给出任何上下文。真的很困惑。

标签: javascript session


【解决方案1】:

是的。由于会话 ID 是通过 URL (document.location.href) 或通过 cookie (document.cookie) 传输的,因此您可以检查两者是否存在会话 ID。

【讨论】:

  • sarnath 该死的 :) 还值得一提的是,一些平台以可检索、可确定的方式将其写入隐藏字段。
【解决方案2】:

以下可用于检索 JSESSIONID:

function getJSessionId(){
    var jsId = document.cookie.match(/JSESSIONID=[^;]+/);
    if(jsId != null) {
        if (jsId instanceof Array)
            jsId = jsId[0].substring(11);
        else
            jsId = jsId.substring(11);
    }
    return jsId;
}

【讨论】:

  • 这个正则表达式会返回除一个值的数组之外的任何内容吗?没有全局修饰符,因此它应该只返回第一个匹配项,如果没有匹配项,则返回 null,这大概是您想要的。
【解决方案3】:

您可以通过在 document.cookie 上发出以下正则表达式来接收会话 ID:

alert(document.cookie.match(/PHPSESSID=[^;]+/));

在我的示例中,用于存储会话 id 的 cookie 名称是 PHPSESSID(php 服务器),只需将 PHPSESSID 替换为包含会话 id 的 cookie 名称。 (可由网络服务器配置)

【讨论】:

    【解决方案4】:

    据我所知,浏览器会话没有 id。

    如果您指的是服务器会话,那通常存储在 cookie 中。例如,ASP.NET 存储的 cookie 名为“ASP.NET_SessionId”。

    【讨论】:

      【解决方案5】:

      这里有一个简短的 JavaScript 函数来获取会话 ID:

      function session_id() {
          return /SESS\w*ID=([^;]+)/i.test(document.cookie) ? RegExp.$1 : false;
      }
      

      或者,如果您更喜欢变量,这里有一个简单的单行:

      var session_id = /SESS\w*ID=([^;]+)/i.test(document.cookie) ? RegExp.$1 : false;
      

      应该与 PHP、JSP、.NET 的会话 ID cookie 匹配,我想其他各种服务器端处理器也是如此。

      【讨论】:

        【解决方案6】:

        对于 PHP 的 PHPSESSID 变量,此函数有效:

        function getPHPSessId() {
            var phpSessionId = document.cookie.match(/PHPSESSID=[A-Za-z0-9]+\;/i);
        
            if(phpSessionId == null) 
                return '';
        
            if(typeof(phpSessionId) == 'undefined')
                return '';
        
            if(phpSessionId.length <= 0)
                return '';
        
            phpSessionId = phpSessionId[0];
        
            var end = phpSessionId.lastIndexOf(';');
            if(end == -1) end = phpSessionId.length;
        
            return phpSessionId.substring(10, end);
        }
        

        【讨论】:

          【解决方案7】:

          您可能可以通过 javascript 中的 ajax ping 服务器。 php 文件可能类似于:

          <?php
          session_start();
          $id = session_id();
          echo $id;
          ?>
          

          这将返回您当前的会话 ID。这就是你要找的东西吗?

          【讨论】:

          • Javascript,不是 PHP
          猜你喜欢
          • 2012-08-09
          • 2010-10-19
          • 1970-01-01
          • 2011-09-07
          • 2013-04-25
          • 2016-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多