Skip to content

Latest commit

 

History

History
38 lines (24 loc) · 2 KB

dfa.md

File metadata and controls

38 lines (24 loc) · 2 KB

Конечный детерминированный автомат разбора Set-Cookie

Проблема

В связи с выбором 1С в качестве строки-разделителя символ , при соединении заголовков HTTP-ответа с одинаковым именем возникает неопределённость при разборе значения заголовка Set-Cookie.

Решение

В качестве решения выбрал и построил ДКА.

Граф детерминированного конечного автомата

Граф нарисован с помощью сервиса 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 без значения и атрибутов