XF 2.3 Перенаправление cookies (Потеря хэша)

Версия XenForo
2.3.10

Sadorimatsu

Проверенные
Сообщения
1,007
Решения
24
Реакции
778
Баллы
1,895
Всем привет.

Столкнулся с проблемой обработки cookies, что при выборе "Расширенной" и при нажатии на кнопку "Принять все файлы cookies", то адрес кнопки изменился на /misc/cookies?update=1&accept=1, когда должно быть примерно такого вида
/misc/cookies?update=1&accept=1&t=1785656915%2Cb9720ad24b3779ffd44c4ee9b328cd92. По факту потерялся хэш. Как возможно это исправить, а точней вернуть как было?

Это произошло после того, как обновил тут:
/admin.php?force-agreement/privacy-policy
/admin.php?force-agreement/terms
В графе белых списков ничего не забивалось, да и зачем, не знаю.
Обновление необходимо было, чтобы всем действующим пользователям подтвердить согласие, если раньше этого не было, потому что закон текущий по персональным данным это обязывает. После этого основной адрес кнопки cookies изменился и открывает страницу "Перенаправление" где есть кнопка "Переадресация". Только послей нажатия этой кнопки он кидает нас на главную страницу и всё.
1785657307521.png
На офе есть тема по этой проблеме
И как показывают источники, проблему пофиксили на версии 2.2.9, но по факту получается проблема осталась.
По словам Криса, нужно включить режим дебага, зайти по admin.php?options/groups/debug/ и проставить по 0 в поле privacy-policy и terms:
photo_2026-07-28_21-14-23.jpg
Это условие я выполнил и статус обновления в тех документах обнулилось как было, но проблему не решило, cookies попрежнему грузится без хеша. Я больше склоняюсь к тому, что тут чисто баг и недоработка со стороны коробки т.к. этот режим по сей день находится в бета.

Никто не сталкивался? Будут какие мысли, как это исправить? Единственное исправление, что есть, это изменить вывод cookies на простой вариант (в рамках закона этого как минимум достаточно), тогда всё будет проходить, а вот с расширенным такая вот проблема получается в этой ситуации. Не то, что критичная проблема, но неприятно. Ладно бы это выходило текущим пользователя для обновления, но так теперь получают все гости, а это неприемлемо.

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

Так что крайне рекомендую вообще их не трогать... но кто бы знал.
 
Последнее редактирование:
Решение
Тем не менее, он оперативно выдал обновление )
Обновление было запланировано у него и к тому же проблему вижу исправил на 1.24.5. Хэш куки конечно не показывает как раньше, но зато при нажатии на согласие, никуда не перенаправляет, никаких действий, а на месте подтверждает и в записи куки отображается. Что мне и важно было.

Так что на версии 1.24.5 исправление было внесено. Вопрос решен, тема закрыта.
После этого основной адрес кнопки cookies изменился и открывает страницу "Перенаправление" где есть кнопка "Переадресация". Только послей нажатия этой кнопки он кидает нас на главную страницу и всё.
Откуда у вас эта страница?
 
Откуда у вас эта страница?
Наглядно показываю:
Это страница идёт по этому адресу: /misc/cookies?update=1&accept=1
Если был бы хэш, то никто бы не увидел эту страницу, без него получается он перенаправляет на главную страницу.
1785700148539.png
Как можете видеть, в адресе нет. На примере инфо можно сравнить:
1785700264892.png
1785700347871.png
И такое происходит, если что-то из этого обновляем:
/admin.php?force-agreement/privacy-policy
/admin.php?force-agreement/terms
1785700457673.png1785700472302.png
У меня они обнулены после дебага, но проблему с хэшем в кукис не решило, что с этим делать, не представляю...
 
Последнее редактирование:
Вы кажется меня не поняли, о чем я говорил изначально. Я спрашивал, откуда у вас страница с кнопкой "переадресация" вообще берется. В движке такого нет. Мое подозрение в том, что у вас какой-то плагин перехватывает контроллер. Если бы у вас не было хэша, в чистом движке вы бы получили просто ошибку, а у вас какая-то страница вместо такой:
1785701914761.png
 
Matew, Да вы были правы. На моё удивление причина в нём Standard Library 1.24.2, стоило отключить хэш на кукис вернулся... будут идеи? Обновление или переустановка его не помогла, проблема осталась с ним. Странно, что же ему не нравится... Пока разбираюсь, сообщу, если что выяснится.
 
Последнее редактирование:
Если бы у вас не было хэша, в чистом движке вы бы получили просто ошибку, а у вас какая-то страница вместо такой:
Теперь точно могу подтвердить, что причина в и конкретно от версии 1.24+.
Установил себе 1.23.9 и проблемы нет. Начиная с 1.24.0 и выше проблема резко появляется и она как-то связано с тем, что обновлял принудительно политику с согласием. Вероятно какой-то скрипт перехватывает плагин и отсюда вся моя проблема. Тут уже надо копать в плагине, какую он имеет связь с обработкой кукис и вывода хэша. Я бы и рад его не ставить, если бы не были зависимы нужные мне плагины, но с низкой версией проблем не доставляет, пока что. Но проблема любопытная конечно, что же он перекрывать то умудряется. Ладно бы какие плагины в связке с ним влияют, но нет, именно он сам и влияет. Было бы неплохо изучить вопрос, может реально косяк автора плагина.

P.S. Написал автору плагина, может разберется.
Судя по обновлениям автора, он затрагивал обработку cookies и были исправления в этом направлении, но вероятно не учёл связь с принудительным обновлением политики и согласия,
 
Последнее редактирование:
:
XF2.3 has always redirected after accepting/rejecting the cookies, and my changes are to remove the token out of the GET link and then use javascript to push the token to php. There is a php side change to add the interstate page.

If a interstate page is being shown, this can happen if the user is disabling javascript or if http referrer policy are set to no-referrer. They will experience the same issues with XF2.4 as it is planning the same changes.

:edit: By default; XF2.3 doesn't actually white list the advanced cookie consent form if you force a terms/privacy policy update, it just silently breaks. It offers functionality to white list those routes but that isn't populated by default or during any XF upgrade
Перевод:
В XF 2.3 всегда выполнялся редирект после принятия или отклонения cookies, и мои изменения заключаются в том, чтобы убрать токен из GET-ссылки, а затем с помощью JavaScript передавать этот токен в PHP. На стороне PHP добавлена промежуточная страница.

Если показывается промежуточная страница, это может происходить в двух случаях: либо у пользователя отключён JavaScript, либо политика HTTP Referrer установлена в значение no-referrer. С такими же проблемами они столкнутся и в XF 2.4, поскольку там планируются аналогичные изменения.

Примечание: По умолчанию в XF 2.3 расширенная форма согласия на использование cookies не имеет белого списка (whitelist) для маршрутов при принудительном обновлении условий или политики конфиденциальности — она просто молча ломается. Функциональность для добавления таких маршрутов в белый список существует, но по умолчанию она не заполнена и не обновляется во время обновления XenForo.
Получается, он отрицает, что его плагин создаёт проблему. Он утверждает, что изменил логику передачи токена (хэша) и теперь он передаётся не в GET-параметре, а через JavaScript браузера (если включен). Это сделано намеренно, чтобы улучшить безопасность. Спрашивается, зачем? Чем решение в ядре не нравится?

Промежуточная страница по перенаправлению или редиректу появляется, судя по всему моя проблема в том случае, если у пользователя отключён JavaScript. Спрашивается, на кой хрен мне его включать. Вроде наоборот у нас его вырубают, нет?
Так же, если браузер или сервер настроены с заголовком Referrer-Policy: no-referrer (тогда информация о предыдущей странице не передаётся, и скрипт не может корректно отработать). Если правильно понимаю...

Он ещё говорит, что в XF 2.4 будет такое же поведение, поэтому проблема не в его плагине, а в том, как работает ядро. Сам получается проблему создал и сам же её отрицает, твердя, что это фича такая... или я чего-то не понимаю? 0_о

Так что и не знаю, что теперь с этим делать... Будут какие у кого мысли? Я конечно сделал откат и не парюсь уже, но всё равно, ситуация довольно неприятная.
 
Последнее редактирование:
Тем не менее, он оперативно выдал обновление )
Обновление было запланировано у него и к тому же проблему вижу исправил на 1.24.5. Хэш куки конечно не показывает как раньше, но зато при нажатии на согласие, никуда не перенаправляет, никаких действий, а на месте подтверждает и в записи куки отображается. Что мне и важно было.

Так что на версии 1.24.5 исправление было внесено. Вопрос решен, тема закрыта.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу