Задать вопрос
@harts_1493

Как получить bitrix_sessid в js без подключения js-библиотеки Bitrix?

Создал отдельную страницу с библиотекой React и создал Fetch запрос с параметром: <?=bitrix_sessid()?>.
Все работает, но если находиться на странице дольше, то сессия обновиться и после запроса через Fetch получаю ошибку: invalid bitrix sessid.
И чтобы я снова смог получить ответ - мне нужно обновить страницу.

И такой вопрос:
Можно ли через js получить bitrix_sessid не подключая js-библиотеки Bitrix?
Я знаю о существование BX.message(‘bitrix_sessid’), но хотелось без подключения библиотеки, плюс в моём файле(страница) подключён только файл prolog_admin_before.php.
  • Вопрос задан
  • 96 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@andry36
на ум приходит несколько подходов:

Парсинг HTML-страницы
Bitrix обычно добавляет актуальный bitrix_sessid в скрытый input, либо в мета-тег. Например:

<meta name="bitrix_sessid" content="abcd1234">

Или:
<input type="hidden" name="sessid" id="sessid" value="abcd1234">


и в js получать:

// Если используется мета-тег
const bitrixSessid = document.querySelector('meta[name="bitrix_sessid"]').content;
// Если используется скрытый input
const bitrixSessid = document.querySelector('input[name="sessid"]').value;


Если сервер настроен так, что сессия передаётся в cookies, возможно, bitrix_sessid можно извлечь оттуда:

const cookies = document.cookie.split('; ').reduce((acc, cookie) => {
  const [key, value] = cookie.split('=');
  acc[key] = value;
  return acc;
}, {});

const bitrixSessid = cookies['bitrix_sessid'];


если prolog_admin_before.php уже подключён, можно встроить передачу bitrix_sessid прямо в JS:

<script>
  window.bitrixSessid = '<?= bitrix_sessid() ?>';
</script>


И потом использовать в JS: console.log(window.bitrixSessid)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы