# Конечный детерминированный автомат разбора Set-Cookie ## Проблема В связи с выбором 1С в качестве строки-разделителя символ `,` при соединении заголовков HTTP-ответа с одинаковым именем возникает неопределённость при разборе значения заголовка Set-Cookie. ## Решение В качестве решения выбрал и построил ДКА. ![Граф детерминированного конечного автомата](/doc/dfa.png "Граф детерминированного конечного автомата") Граф нарисован с помощью сервиса [diagrams.net](https://app.diagrams.net/). Текущая версия экспортирована в `/doc/dfa.xml`. ### Состояния - `A` – имя Cookie - `B` – значение Cookie - `C` – имя атрибута - `D` – значение атрибута - `AB` – это либо имя очередного Cookie, либо значение текущего Cookie - `AD` – это либо имя очередного Cookie, либо значение атрибута текущего Cookie Каждое состояние может быть финальным. ### Переходы - `1` – встретился токен `=` - `2` – встретился токен `;` - `3` – встретился токен `,` - `4` – EOS (больше нечего читать) ## Проблема не решена полностью Автомат не "поймёт" 2 случая: 1. Значение Cookie содержит символ `,`, и затем следует Cookie без значения и атрибутов 2. Значение последнего атрибута Cookie содержит символ `,`, и затем следует Cookie без значения и атрибутов