Я использую куки-файлы сеансов на стороне сервера, используя Flask -Session .
Реализация в основном работает нормально, но при использовании Chrome для доступа к моему API возникает следующая ошибка:
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'session_id' at row 1")
Вот схема моей таблицы сеансов (flask_sessions_table) (генерируется расширением flask):
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| session_id | varchar(255) | YES | UNI | NULL | |
| data | blob | YES | | NULL | |
| expiry | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Я не сталкиваюсь с этой ошибкой ни в одном другом крупном браузере (Firefox, Chromium, Safari, Postman и др. c). ). Похоже, что файлы cookie сеанса, отправленные из Chrome в мое приложение на основе Flask, слишком длинные (~ 300 символов, иногда даже ~ 1200), тогда как в других браузерах они составляют ~ ~ 50 символов. См. Прикрепленное изображение:
![session cookie on chrome - too large!](https://i.stack.imgur.com/uZp7I.png)
Эта ошибка приводит к тому, что мое приложение (сервер API) обрабатывает sh, так как flask -сессия не может быть сохранена Повар сеанса ie при каждом входящем запросе. Я думал о следующих обходных путях, но они не могли работать:
- преобразовать flask_sessions_table.session_id из varchar (255) в LONGTEXT. Кажется, что SQLAlchemy (ORM) не поддерживает типы текста?
- усекает и сохраняет первые 255 символов из chrome cook ie. Похоже, что нет способа «перехватить» запрос перед сохранением сеанса cook ie: расширение сохраняет cook ie сразу перед выполнением операторов в моих маршрутах запроса
Любые другие идеи о том, как это исправить для Chrome?
ОБНОВЛЕНИЕ: я заметил, что когда домен является «localhost», файлы cookie длиннее, чем 255 символов, тогда как при обращении к одному и тому же точному экземпляру из ngrok они нормальные (~ 43 символа). Что такое Chrome на локальном хосте, которое может вызывать длительные сеансовые куки?