База База веб-разработчика Обязательно

HTTP, cookie и сессии

Веб-приложение на Битриксе опирается на стандартную механику HTTP: методы, статус-коды, заголовки, cookie и блокировки сессий. Понимание жизненного цикла запроса и ответа избавляет от ошибок при отдаче чистого JSON в AJAX-обработчиках и проблем с сессиями при параллельных запросах.

6 разработчиков прошли

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Запрос и ответ, методы, коды статусов
  • 2
    Заголовки, cookie, сессии
  • 3
    Кеширование на уровне HTTP
  • 4
    Как браузер загружает страницу

Материалы

Официальная документация

Проверь себя

AJAX-обработчик возвращает JSON, но фронтенд получает HTML шапки сайта перед ним. Почему?

Обработчик подключил /bitrix/header.php вместо служебного пролога /bitrix/modules/main/include/prolog_before.php, и в ответ ушёл шаблон сайта. Второй вариант — забытый $APPLICATION->RestartBuffer() перед выводом.

Заказчик пишет: «залогинился на www.site.ru, перешёл на site.ru — снова гость». Где причина?

В домене cookie. Cookie авторизации выставлена для одного хоста, браузер не отправляет её на другой. Смотреть заголовок Set-Cookie в DevTools и настройки домена сайта, а не код авторизации.

Почему cookie, добавленная через $response->addCookie() в этом же хите, не читается через $request->getCookie()?

Cookie уходит клиенту в заголовке ответа и вернётся только со следующим запросом. В текущем запросе её ещё нет — это протокол, а не баг ядра.

Страница с десятком параллельных AJAX-запросов у одного пользователя отвечает по очереди, а не сразу. При чём тут HTTP?

Сессия PHP блокируется на время хита, и запросы одного пользователя ждут друг друга. Для читающих обработчиков помогает константа BX_SECURITY_SESSION_READONLY до подключения ядра, но тогда сессия в этом хите не сохранится.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти