1
0
mirror of https://github.com/SpaceHead1C/1c_http.git synced 2026-03-12 03:35:16 +02:00
Files
1c_http/doc/dfa.md

2.0 KiB

Конечный детерминированный автомат разбора 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 без значения и атрибутов