Cookies и ошибка клиента 400 Bad Request
Нужна ваша помощь. Отчего может возникать данная ошибка?
Использую чужой скрипт для корзины в интернет магазине. Содержимое корзины хранилось в одном куке, но из-за этого беспокоило известное ограничение на 4 кб. Я сделал так что при заполнении куки на сколько-то символов, скрипт пишет в следующую. При чтении соответственно объединяет. Тем не менее, при общем объеме корзины более 4кб символов перестают грузиться страницы - показывает ошибку "400 Bad Request". Странно то, что разбиение/объединение куков работает корректно: я ставил ограничение наполнения в 500 символов, т.е. скрипт писал и считывал успешно из 8 разных куков, однако если добавить еще немного товаров в корзину, т.е. несколько превысить 500*8 - страницы начинают грузиться с ошибкой 400, если убрать обратно - все снова работает. Из-за чего вообще это может быть? Вряд ли это ошибка в js коде, ведь это сервер шлет 400-й привет, но тем не менее вот мои функции, вдруг что-то прояснят: function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; for (var x=0; x<9; x++) document.cookie = name+x+"=" + value.substr(1000*x,1000) + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "=", returnstring = "", ca; for (var x=0; x<9; x++) { nameEQ = name + x + "=" ; ca = document.cookie.split(';'); for (var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) === 0) returnstring = returnstring + c.substring(nameEQ.length,c.length); } } return returnstring; } |
а погуглить слабо?
насколько я понял по гуглу, проблема возникает на веб-сервере nginx, при большом суммарном размере кук |
Видимо гуглить не умею - не находил этой информации. Спасибо, Gvozd
|
ну, это результат анализа результатов гугления.
напрямую-то так там нигде не сказано, ибо все вопросы были с юзерской точки зрения "как мне зайти на любимый сайт" вот, походу решение проблемы: http://www.ruby-forum.com/topic/173362 PS в любом случае помни, что куки не безграничны, и ограничиваются самим браузером, поэтому в них лучше хранить минимум инфы |
Цитата:
А ошибка, потому что http-заголовки получаются слишком большие, nginx их не переваривает. А проблема в том, что хранение корзины в куках -- не лучшая идея. |
Часовой пояс GMT +3, время: 13:19. |