2013-04-29 2 views
8

Ich habe manuell erstellt zwei Cookies mit Firebug:Warum Webbrowser beim Senden von Cookies die Portnummer nicht interessiert?

Cookie1=value1; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost; HttpOnly 
Cookie2=value2; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost:8080; HttpOnly 

Der einzige Unterschied ist das Domain-Attribut, ist localhost, während die andere eine Portnummer haben.

Dies ist der HTTP-Header, wenn ich versuche http://localhost:8080/Ex05Cookie/ zu beantragen:

GET /Ex05Cookie/ HTTP/1.1 
Host: localhost:8080 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Cookie: Cookie1=value1 
Connection: keep-alive 
Cache-Control: max-age=0 

wo der Header enthält nur cookie1 deren Domäne ist localhost.

Warum mein Firefox nicht Cookie2 anstelle von Cookie1 senden?

+0

Ich denke, es ist das "same-domain" Problem mit der HTTP-Mechanik, wo der Browser verschiedene Pfade und/oder Ports nicht unterscheidet, um verschiedene Cookies zu verwenden die gleiche Domain. –

+0

Dies kann jedoch zu Problemen führen, da verschiedene Server auf unterschiedlichen Ports ausgeführt werden und Cookies, die vom httpd-Server (Port 80) erstellt wurden, nicht an Tomcat (8080-Port) gesendet werden sollten. –

+0

Sehr wahr; Ich bin auch daran interessiert, wer einen Workaround dafür kennen würde. –

Antwort

5

Dies wird durch https://stackoverflow.com/a/4212964/14731 und vom Autor RFC 6265 beantwortet:

Wenn wir Cookies heute entwerfen, würden wir es auf jeden Fall pro Port machen. Cookies werden jedoch heutzutage im Internet häufig verwendet und diese Art von Änderung würde zu viele Websites beschädigen. In den meisten Fällen werden Cookies in dem Sinne "erledigt", dass ich nicht viel von ihnen erwarten würde. Leider bedeutet das, dass wir bei Cookies nicht die Portnummer respektieren.

Quelle: https://groups.google.com/d/msg/comp.infosystems.www.misc/6WXdQ2RFhG8/VvOUuR3FNAUJ

0

die Cookie-Port nicht (wie im falschen "domain = foobar.com: 8443") auf der Domäne festgelegt werden soll, sondern als separates Cookie 'Port' param (wie in "domain = foobar.com; port = 8443")

Verwandte Themen