【发布时间】:2018-04-16 15:59:06
【问题描述】:
是否可以使用javascript读取浏览器会话ID?
【问题讨论】:
-
这个问题是如何得到这些答案的,即使它没有给出任何上下文。真的很困惑。
标签: javascript session
是否可以使用javascript读取浏览器会话ID?
【问题讨论】:
标签: javascript session
是的。由于会话 ID 是通过 URL (document.location.href) 或通过 cookie (document.cookie) 传输的,因此您可以检查两者是否存在会话 ID。
【讨论】:
以下可用于检索 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;
}
【讨论】:
您可以通过在 document.cookie 上发出以下正则表达式来接收会话 ID:
alert(document.cookie.match(/PHPSESSID=[^;]+/));
在我的示例中,用于存储会话 id 的 cookie 名称是 PHPSESSID(php 服务器),只需将 PHPSESSID 替换为包含会话 id 的 cookie 名称。 (可由网络服务器配置)
【讨论】:
据我所知,浏览器会话没有 id。
如果您指的是服务器会话,那通常存储在 cookie 中。例如,ASP.NET 存储的 cookie 名为“ASP.NET_SessionId”。
【讨论】:
这里有一个简短的 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 匹配,我想其他各种服务器端处理器也是如此。
【讨论】:
对于 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);
}
【讨论】:
您可能可以通过 javascript 中的 ajax ping 服务器。 php 文件可能类似于:
<?php
session_start();
$id = session_id();
echo $id;
?>
这将返回您当前的会话 ID。这就是你要找的东西吗?
【讨论】: