Рейтинг:0

Несколько заголовков идентификатора сеанса, отправленных Apache HTTPD, обслуживающим PHP

флаг zw

Проблема

Я получаю несколько одинаковых заголовков HTTP в ответах веб-приложения. Иногда это десятки репликаций в зависимости от вызываемого скрипта.

Настраивать

Это большое и очень старое приложение на основе PHP. Он поставляется с использованием Apache HTTPD 2.4 (Debian) с использованием php7_module модуль.

Приложение имеет некоторый код библиотеки, который обрабатывает информацию о сеансе. В этом коде он оборачивает обработку с помощью сеанс_старт(); и сессия_write_close();.

Моя попытка

Исследовать

Я читал об этой проблеме и узнал, что упаковка выполняется для разблокировки объекта сеанса, чтобы другие части приложения также могли читать и писать в него. Кажется, это метод во многих приложениях.

Я также читал об ошибке в PHP, которая вызывает именно такое поведение. На самом деле за годы, которые я обнаружил, было несколько сообщений об ошибках. Один пример отчета: https://bugs.php.net/bug.php?id=38104

Все отчеты закрыты и решены. Это больше не должно быть реальной ошибкой в ​​PHP. Я также читал, что это происходит только при использовании PHP-модуля Apache HTTPD, а не при непосредственном вызове PHP.

PHP

Я попробовал программное решение, в котором я просто перебираю заголовки в конце сценария «просмотр» и убеждаюсь, что есть только один Set-Cookie заголовок. Это, однако, не является реальным решением, поскольку существуют сотни просмотров, и это должно произойти с каждым существующим сейчас и в будущем.

Примечание к заголовку HTTPD

Я пытался использовать mod_headers Примечание команда из Директива заголовка, но я еще не мог заставить его работать.

Примечание в заголовке Set-Cookie save_cookie
Заголовок удален Set-Cookie
Набор заголовков Set-Cookie "%{saved_cookie}n"

Я действительно не нашел хороших примеров того, как его использовать. Я также не знаю, можно ли использовать заметки таким образом.

Вопрос

Кто-нибудь знает решение, как исправить это, возможно, с помощью конфигурации HTTPD или чего-либо, что можно сделать один раз.

SvenTUM avatar
флаг zw
Я реструктурировал код и добавил примечание к заголовку раздела HTTPD, что было еще одной неудачной попыткой.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.