2013-04-29 16 views
8

Ho creato manualmente due cookie utilizzando Firebug:Perché al browser Web non interessa il numero di porta quando si invia un cookie?

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 

L'unica differenza è l'attributo di dominio, uno è localhost mentre l'altro ha un numero di porta.

Questa è l'intestazione HTTP quando provo a chiedere http://localhost:8080/Ex05Cookie/:

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 

in cui l'intestazione contiene solo cookie1 il cui dominio è localhost.

Perché il mio firefox non invia Cookie2 anziché Cookie1?

+0

Immagino sia il problema dello "stesso dominio" con la meccanica HTTP, in cui il browser non distingue tra percorsi e/o porte diversi per utilizzare diversi cookie all'interno di lo stesso dominio. –

+0

ma ciò potrebbe causare problemi, poiché server diversi vengono eseguiti su porte diverse e i cookie creati dal server httpd (porta 80) non devono essere inviati a Tomcat (porta 8080). –

+0

Molto vero; Sono anche interessato a chi potrebbe sapere una soluzione per questo. –

risposta

5

Questo si risponde con https://stackoverflow.com/a/4212964/14731 e dall'autore di RFC 6265:

Se stavamo progettando cookie oggi, sicuramente ci rendono per porta. Tuttavia, i cookie sono ampiamente utilizzati su Internet oggi e fare questo tipo di cambiamento potrebbe interrompere troppi siti. Per la maggior parte, i cookie sono "fatti" nel senso che non mi aspetterei che cambino molto. Sfortunatamente, ciò significa che siamo rimasti bloccati con i cookie che non rispettano il numero di porta.

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

0

il cookie porta non dovrebbe essere impostato sul dominio (come nel "dominio = foobar.com: 8443" sbagliato), ma come un cookie separata 'porta' param (come in "dominio = foobar.com; port = 8443")

Problemi correlati