使用Javascript读取会话ID

时间:2009-05-28 12:49:35

标签: javascript session

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

7 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:7)

以下内容可用于检索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;
}

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:2)

对于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);
}

答案 5 :(得分:1)

这是一个简短而又甜蜜的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 :(得分:-1)

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

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

这将返回当前的会话ID。这是你在寻找什么。