Chrome файлов cookie сеанса слишком длинны для столбца базы данных - PullRequest
0 голосов
/ 21 января 2020

Я использую куки-файлы сеансов на стороне сервера, используя 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!

Эта ошибка приводит к тому, что мое приложение (сервер API) обрабатывает sh, так как flask -сессия не может быть сохранена Повар сеанса ie при каждом входящем запросе. Я думал о следующих обходных путях, но они не могли работать:

  1. преобразовать flask_sessions_table.session_id из varchar (255) в LONGTEXT. Кажется, что SQLAlchemy (ORM) не поддерживает типы текста?
  2. усекает и сохраняет первые 255 символов из chrome cook ie. Похоже, что нет способа «перехватить» запрос перед сохранением сеанса cook ie: расширение сохраняет cook ie сразу перед выполнением операторов в моих маршрутах запроса

Любые другие идеи о том, как это исправить для Chrome?

ОБНОВЛЕНИЕ: я заметил, что когда домен является «localhost», файлы cookie длиннее, чем 255 символов, тогда как при обращении к одному и тому же точному экземпляру из ngrok они нормальные (~ 43 символа). Что такое Chrome на локальном хосте, которое может вызывать длительные сеансовые куки?

...