2017-01-28 2 views
1

Wenn Sie Ajax-Anforderung an einen Server und Ihre Größe von Cookies ist zu groß, zu senden, erhalten Sie die Meldung:Wie filtert man Cookies, wenn man eine Ajax-Anfrage sendet?

Bad Request

Ihr Browser eine Anfrage erhalten hat, dass dieser Server nicht verstehen kann. Die Größe eines Anforderungsheaderfelds überschreitet das Serverlimit.

Plätzchen

Gibt es eine Möglichkeit Cookies über Javascript (jQuery, Angular) zu filtern, bevor Anfrage zu senden? Zum Beispiel: Ich habe 25kb Cookies auf der bestimmten Website (Limit auf dem Server ist 16kb), gibt es ein Session-Cookie unter ihnen. Wie kann ich nur Session-Cookies an den Server oder die Cookies senden, die ich möchte? Ist dies möglich ohne redundante Cookies zu löschen? Ein anderes Beispiel: Ich habe Domain-Cookies .mysite.com. Wenn ich zu one.mysite.com gehe, erhalte ich andere Plätzchen, wenn ich zu two.mysite.com gehe, werden neue Plätzchen installiert und etc. Wenn ich ajax Anfrage von einer dieser Seiten sende, werden die Cookies zusammenfassen und sie gehen alle zum Kopf der Anfrage, die das Serverlimit übersteigen kann.

Ich habe viele Kekse, aber niemand ist 3kb überschreitet. Die Hauptfrage ist: Kann ich Cookies in JavaScript nach Domainnamen filtern?

+0

Ich bin irgendwie verwirrt ... Wenn der Cookie zu groß für Ihren Server ist (beachten Sie, dass Cookies auf dem Client gespeichert sind, wo das Limit 4k ist), sollte dies ein Problem nicht nur innerhalb einer Ajax-Anfrage sein HTTP-Anfrage Bitte geben Sie weitere Informationen an. Warum ist Ihr Cookie größer als 4k (die Größenbeschränkung Ihres Standard-Cookies)? – jeremy

+0

@jeremy Ich habe Domain-Cookies '.mysite.com'. Wenn ich auf "one.mysite.com" gehe, erhalte ich weitere Cookies, wenn ich auf "two.mysite.com" gehe, werden neue Cookies installiert und so weiter. Wenn ich eine Ajax-Anfrage von einer dieser Seiten sende, werden Cookies zusammengefasst und sie alle Geht zum Header der Anfrage, die das Serverlimit überschreiten kann. –

+0

Ja, sehr verwirrend. Wie viele Cookies generieren Sie eine Pre-Domain? Gibt es Cookies, die mehr als 4k überschreiten? Sie können immer einen Cookie nach dem anderen aufrufen, aber wenn er zu groß ist, dann speichern Sie viel zu viel in einem Cookie. Vielleicht möchten Sie Ihren Code überdenken. –

Antwort

0

Stellen Sie einfach die Domain und den Pfad Attribute auf Ihrem Cookie, wie:

<script type="text/javascript"> 
var cookieName = 'HelloWorld'; 
var cookieValue = 'HelloWorld'; 
var myDate = new Date(); 
myDate.setMonth(myDate.getMonth() + 12); 
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate + ";domain=.example.com;path=/"; 
</script> 

Dann können Sie ein Cookie aufrufen, indem sie Domain-Wert.

+1

Es Ok, aber wenn ich Ajax-Anfrage von der Seite senden, gehen alle Cookies von der Seite zu Header-Anfrage. Gibt es eine Chance, bestimmte Cookies zu senden? –