Сообщение об использовании cookie – VISIC на практике

11.08.2017 18:25

В этой статье демонстрируется использование диаграмм на языке VISIC при решении практической задачи.

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

Задача распространённая, в интернете есть множество готовых решений. Одно из таких решений было найдено и встроено в код сайта. Суть решения довольно проста: нужно использовать специальное значение cookie, чтобы понять, посещал ли пользователь сайт раньше. Если значение отсутствует — значит, не посещал, и нужно показать ему предупреждение. Как только пользователь подтвердит, что он прочитал предупреждение, сохраняем это значение в cookie. При загрузке следующей страницы оно уже будет установлено, и значит, показывать предупреждение больше не нужно.

Сценарий взаимодействия пользователя, браузера и веб-сервера при первом посещении будет выглядеть так.

Сценарий взаимодействия после подтверждения пользователя должен выглядеть так.

Но при тестировании решения оказалось, что окно с предупреждением ведёт себя совершенно непредсказуемо: не появляется при первом посещении сайта, но внезапно возникает при просмотре страниц даже после того, как пользователь кликнул по ссылке с подтверждением.

Причина нашлась довольно быстро. Дело в том, что сайт сохраняет код наиболее часто посещаемых страниц в файловом кэше, чтобы не выполнять трудоёмкую сборку страницы при каждом запросе. Время жизни такого файла — несколько минут. А встраивание предупреждения об использовании cookie в код выполняется как раз при сборке страницы. Упрощённо алгоритм работы веб-сервера при обработке запроса выглядит так (конечно, здесь показаны только те действия, которые существенны для выполняемой доработки):

То есть, если запрашиваемая страница сохранена в кэше, то сервер вернёт её по запросу браузера, не проверяя полученное значение cookie. При этом наличие предупреждения в коде кэшированной страницы зависит от того, было ли установлено это значение в момент сохранения страницы в кэш — и скорее всего, совсем у другого пользователя.

Очевидный способ решения проблемы — перенести проверку наличия cookie с веб-сервера в браузер. Сценарий взаимодействия при первом посещении тогда будет выглядеть так:

После изменения логики всё заработало, как надо. А диаграммы помогли быстро разобраться, где возникает проблема и как её решить.

Иллюстрации к этой статье нарисованы в бесплатном редакторе yEd.



Автор статьи


Григорий Печёнкин

Партнёры и друзья



Продолжая использовать этот сайт, вы даете согласие на обработку файлов cookie, пользовательских данных (включая сведения о местоположении, тип и версия ОС, тип и версия браузера, тип устройства и разрешение его экрана, источник откуда пришел на сайт пользователь, с какого сайта или по какой рекламе, язык ОС и Браузера, какие страницы открывает и на какие кнопки нажимает пользователь, IP-адрес). Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте сайт. Вы можете узнать, как используются эти данные, ознакомившись с Политикой конфиденциальности.
Ясно, больше не показывать это сообщение