Getting Cook ie Переполнение в приложении рельсов (REDMINE) - PullRequest
0 голосов
/ 24 апреля 2020
ActionDispatch::Cookies::CookieOverflow (ActionDispatch::Cookies::CookieOverflow):
actionpack (4.2.8) lib/action_dispatch/middleware/cookies.rb:529:in `[]='

Я получаю эту ошибку при нажатии redmine rest api. Простой get api, такой как url1, работает нормально, но когда дело доходит до сложного url2 как url2, приложение выдает переполнение cook ie.

url1: localhost:3000/issues.json?page=1&limit=100
url2: http://localhost:3000/issues.json?key=292fe116d13d5f5db8a0e3f2b031f1e57ad1c882&f[]=project_id&op[project_id]=!&v[project_id][]=505&f[]=project_id&op[project_id]=!&v[project_id][]=478&f[]=project_id&op[project_id]=!&v[project_id][]=366&f[]=project_id&op[project_id]=!&v[project_id][]=419&f[]=project_id&op[project_id]=!&v[project_id][]=343&f[]=project_id&op[project_id]=!&v[project_id][]=345&f[]=project_id&op[project_id]=!&v[project_id][]=512&f[]=project_id&op[project_id]=!&v[project_id][]=487&f[]=project_id&op[project_id]=!&v[project_id][]=473&f[]=project_id&op[project_id]=!&v[project_id][]=509&f[]=project_id&op[project_id]=!&v[project_id][]=520&f[]=project_id&op[project_id]=!&v[project_id][]=404&f[]=project_id&op[project_id]=!&v[project_id][]=440&f[]=project_id&op[project_id]=!&v[project_id][]=389&f[]=project_id&op[project_id]=!&v[project_id][]=467&f[]=project_id&op[project_id]=!&v[project_id][]=501&f[]=project_id&op[project_id]=!&v[project_id][]=474&f[]=project_id&op[project_id]=!&v[project_id][]=471&f[]=project_id&op[project_id]=!&v[project_id][]=480&f[]=project_id&op[project_id]=!&v[project_id][]=507&f[]=project_id&op[project_id]=!&v[project_id][]=383&f[]=project_id&page=1&limit=100

Я не сохранил ничего, кроме имени пользователя, cas ticket в сеансе как:

 request.session['cas'] = { 'user' => user, 'ticket' => ticket, 'extra_attributes' => [] }

Я искал решение на многих форумах. Все сказанное не сохраняет ненужные данные, но я сохраняю только имя пользователя и билет. Когда я печатаю сессию, это результат:

puts(session.to_hash)

{"session_id"=>"fbe61cf9fd1c2ef0111d5d84a1a374c2", "cas"=>{"user"=>"user@gmail.com", "ticket"=>"ST-27189-R20MW7GBWaLWNJvl1aMi-localhost", "extra_attributes"=>[]}}

Но когда я проверяю сессию, как показано ниже, я получаю множество данных gibberi sh, как показано ниже. Я увидел, что материал ActiveRecord и параметры запроса из GET действительно часть сессии.

puts(session.inspect)

[result]: https://textsaver.flap.tv/lists/3caw "Click here for session.inspect output"

Поскольку я новичок ie и только начинаю ruby на рельсах, любые предложения будут высоко оценены. Спасибо.

1 Ответ

1 голос
/ 24 апреля 2020

Этот второй URL со многими параметрами довольно длинный, и он раздувает сеанс, поскольку он присутствует в original_fullpath, query_string и других переменных в сеансе. А у повара ie в магазине есть ограничения - там только 4кб.

Я предлагаю изменить хранилище сеансов с cook ie на database или memcache , как объяснено в связанных ответах.

...