Показать сообщение отдельно
  #1 (permalink)  
Старый 01.06.2010, 22:48
Интересующийся
Отправить личное сообщение для Roman-NN Посмотреть профиль Найти все сообщения от Roman-NN
 
Регистрация: 01.06.2010
Сообщений: 10

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;
}
Ответить с цитированием