Ответ 1
Да. Поскольку идентификатор сеанса либо переносится по URL (document.location.href
), либо через файл cookie (document.cookie
), вы можете проверить оба на наличие идентификатора сеанса.
Можно ли каким-либо образом прочитать идентификатор сеанса браузера с помощью javascript?
Да. Поскольку идентификатор сеанса либо переносится по URL (document.location.href
), либо через файл cookie (document.cookie
), вы можете проверить оба на наличие идентификатора сеанса.
вы можете получить идентификатор сеанса, выпустив следующее регулярное выражение на document.cookie:
оповещения (document.cookie.match(/PHPSESSID = [^;] +/));
в моем примере имя файла cookie для хранения идентификатора сеанса - PHPSESSID (php-сервер), просто замените PHPSESSID на имя файла cookie, в котором содержится идентификатор сеанса. (настраивается веб-сервером)
Для извлечения 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;
}
Насколько я знаю, сеанс браузера не имеет идентификатора.
Если вы имеете в виду сеанс сервера, который обычно хранится в файле cookie. Файл cookie, который хранится в ASP.NET, например, называется "ASP.NET_SessionId".
Для переменной 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 для получения идентификатора сеанса:
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;
Должен совпасть с cookie идентификатора сеанса для PHP, JSP,.NET, и я полагаю, что и другие серверные процессоры.
вы можете, возможно, пинговать сервер через ajax внутри javascript. Файл php может выглядеть примерно так:
<?php
session_start();
$id = session_id();
echo $id;
?>
Это вернет вам текущий идентификатор сеанса. Это то, что вы искали.
Обновление 2017
var cookie = new URLSearchParams(document.cookie)
if(cookie.has("PHPSESSID")){
var sessionID = cookie.get("PHPSESSID")
}