Blad 400 Bad Request przy ustawieniu duzej ilosci cookies

0

Witam Was serdecznie! Mam pewnie problem i nie wiem jak go ugryźć... MOże WY pomożecie. Otóż mam na stronie potężny formularz, dużo danych do wypełnienia. Zmienne przesyłane metodą POST. Zrobiłem mechanizm zapisywania w JavaScripcie (jQuery) ciasteczek u klienta po każdym wypełnieniu pola tak aby w wyniku nieprzewidzianych zdarzeń dane nie zostały skasowane oraz aby przy ponownej wizycie dane zostały wczytane. Wszystko działa pięknie do pewnego momentu. Ustawiłem sobie pamięć podręczna przeglądarki na 1 mb i w pewnym momencie przy wpisywaniu danych do formularza (i tym samym tworzeniu nowych ciasteczek) po przeładowaniu strony wyskakuje błąd:
400 Bad Request
It is not a valid request!

Sprawę rozwiązuje TYLKO ręczne usunięcie ciasteczek z przeglądarki. Czy to jest normalne? Jak to obejść? Jest np. jakiś sposób ktory powiadamia użytkownika o braku miejsca na COOKIE?
W jQuery ciasteczka tworzę tak:

 $('input[type$="text"]').change(function(event)
	{
		$.cookie($(this).attr('name'), $(this).val(), { expires:1000 }, { path: "/" });
});

Macie jakieś pomysły?

Z góry dziękuję za pomoc

Dodatkowo chciałbym dodać, ze np z ustawioną pamięcią podręczną na 1 mb, po kilkudziesieciu wypełnieniach pól (co automatycznie za pomocą jQuery powoduje utworzenie nowych ciasteczek) strona zaczyna strasznie mulić.... PO usunięciu ciasteczek wszystko wraca do normy... czyzby COOKIES tak okropnie po stronie klienta zżerały zasoby?

Dodam jeszcze, że tych cookie jest kilkadziesiąt... Czyżby przez to zapychała się strona? Niektóre cookie zawierają dużo danych, np kilkanaście zdań (pobrane z textarea)...

0

Niestety istnieje ograniczenie na ilosc cookies ustawionych na jedna domene. Ale jest to liczba od 50-70 na kazda domene. Nie sadze, abys miala ich az tyle. Czemu nie przechowujesz wszystkieg w jednym cookie? Chodziaz, o ile dobrze pamietam limit danych na jedno ciastko, to jakies 4 kB. Wiec takie cos pewnie tez Cie satysfakcjonuje. Generalnie, tak, czy inaczej, ten sposob przechowywania danych, po stronie klienta nie jest zbyt trafiony.

Jezeli mialbym strzelac, to nie cookies zzeraja zasoby i mula, ale operacje, ktore na nich dokonujesz przy pomocy jQuery. Niestety bez kawalka kodu nie bedziemy w stanie pomoc. Musisz sama szukac przyczyny i "waskiego gardla".

Oczywiscie, jak wiesz, blad 400 oznacza nieprawidlowe zadanie. Pewnie problemem jest jedno z ustawionych ciastek. Proponowalbym CI uzycie wtyczek developerskich, typu firebug i sprawdzeniu samemu, co jest tego przyczyna.

0

Czy serwer http odpowiada cokolwiek poza 400-tką? W logach może jakieś info? A może odbija się już na jakimś proxy po drodze?
IMO Jedynym błędem spowodowanym dużą ilością cookiesów powinno być Entity Too Large ;-)

0
Adam Boduch napisał(a)

Niestety istnieje ograniczenie na ilosc cookies ustawionych na jedna domene. Ale jest to liczba od 50-70 na kazda domene. Nie sadze, abys miala ich az tyle. Czemu nie przechowujesz wszystkieg w jednym cookie? Chodziaz, o ile dobrze pamietam limit danych na jedno ciastko, to jakies 4 kB. Wiec takie cos pewnie tez Cie satysfakcjonuje. Generalnie, tak, czy inaczej, ten sposob przechowywania danych, po stronie klienta nie jest zbyt trafiony.

Jezeli mialbym strzelac, to nie cookies zzeraja zasoby i mula, ale operacje, ktore na nich dokonujesz przy pomocy jQuery. Niestety bez kawalka kodu nie bedziemy w stanie pomoc. Musisz sama szukac przyczyny i "waskiego gardla".

Oczywiscie, jak wiesz, blad 400 oznacza nieprawidlowe zadanie. Pewnie problemem jest jedno z ustawionych ciastek. Proponowalbym CI uzycie wtyczek developerskich, typu firebug i sprawdzeniu samemu, co jest tego przyczyna.

Dziękuję za odpowiedź... Czy to pewne, że maksymalna liczba ciasteczek na jedną domenę wynosi 50-70? Mówisz, ze ten sposób przechowywania danych - po stronie klienta - to nietrafiony pomysł. Częściowo masz rację, zapisyywanie w bazie danych wartości z około 80 pól formularza chciałem po prostu wzbogacić w postaci ciasteczek, aby np w wyniku utraty prądu i wyłączeniu komputera wszystkie dane nie zostały utracone...

A mam jedno pytanie - co się dzieje w momencie gdy za pomocą jQuery próbuję utworzyć nowe ciasteczko a pamięci podręcznej jest za mało?

A tak swoją drogą, może ktoś wie jak za pomocą Javascriptu sprawdzać czy jest jeszcze meijsce na nowe COOKIE? Hmmm, chyba to jest niemożliwe, bo zauważyłem, że wtedy stare COOKIE są usuwane i tworzone w te miejsce nowe...

Dzięki Wam za rady... chyba po prostu muszę mniejszą wagę przywiązywać do COOKIE i potraktować tę metodę zapisu danych jako alternatywną...

Pozdrawiam

I jeszcze jedno dopiszę... Limit 50-70 ciasteczek na domenę jest nieprawidłowy... Nie wiem jaki jest limit, ale w moim systemie po stronie klienta tworzonych jest ponad 100 ciasteczek... To taka ciekawostka

0

Może zamiast X ciasteczek, ustawiaj jedno - z zserializowanym obiektem zawierającym wszystkie potrzebne dane.

1

możesz jeszcze zapisywać dane po stronie serwera w bazie danych i co kilka sekund (lub po utracie focusa kontrolki) wysyłać wszystkie dane w tle na serwer ajaxem i zapisać np w postaci JSONa, wtedy i w JS nie miałbyś problemu przechować i nie musisz robić wielkiej tabeli w bazie (dodanie pól w formularzu nie będzie skutkowało potrzebą zmiany w bazie)

1 użytkowników online, w tym zalogowanych: 0, gości: 1