2010-01-28 16 views
8

Mi è stato chiesto di costruire una sezione a schede sulle pagine che hanno URL RESTful senza una barra finale (NET MVC), ad esempio http://myhost/books/the-amber-spyglassRESTful percorso del cookie non riesce in IE senza slash

Per le sezioni a schede per essere un po 'più user friendly Voglio che ricordino quale scheda è stata aperta su ogni pagina mentre l'utente si sposta, in modo che se tornano a un libro che erano precedentemente nella stessa scheda rimane aperto. Ciò si ottiene impostando un cookie denominato "tab" con il valore impostato sul tabid e il percorso impostato sulla pagina su cui si trovano (quindi non ha effetto sulle schede delle altre pagine). Finora cose piuttosto semplici che penseresti, e funziona anche molto bene.

Immettere Internet Explorer.

In IE risulta che un cookie con percorso/libri/the-amber-spyglass NON corrisponde all'URL sopra riportato e di conseguenza non verrà impostato correttamente. Se aggiungo una barra finale, il percorso è/books/the-amber-spyglass/invece funziona bene - ma non posso cambiare il nostro schema URL, e anche se potessi "the-amber-spyglass" è una risorsa, NON una cartella.

Qualcuno ha una soluzione consigliata a questo problema, sicuramente estremamente comune?

Molte grazie in anticipo,

JS

risposta

8

Vedi http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

a causa di un bug oscuro nel sottostante WinINET InternetGetCookie implementazione, document.cookie di IE non restituirà un cookie se è stato impostato con un attributo path contenente un nome file .

Per esempio, se una pagina imposta un cookie su se stessa in questo modo:

Set-Cookie: HTTPSet-PathCookie = PASSA; path =/check.htm

... il cookie sarà inviato con richieste HTTP ma non verranno visualizzate nella raccolta document.cookie .

+0

Grazie per averlo chiarito, ho implementato una soluzione diversa in cui il nome del cookie viene generato in base all'URL. Questo è tutt'altro che ideale in quanto inizierà a sovrascrivere i cookie dopo che è stato fatto clic su un certo numero di schede (20 in IE credo). –

+0

Ho appena eseguito un test e dopo aver fatto clic su 52 schede, tutti i cookie sono ancora presenti in base allo strumento "informazioni sui cookie" in Ivo devtools. Questo non è quello che mi aspettavo, come ho visto in diversi punti che IE memorizzerà un massimo di 20 cookie per dominio (50 per Firefox). Cosa sta succedendo qui? –

+2

Il limite di cookie per dominio è stato modificato in 50 su tutte le versioni di IE nell'agosto 2007. http://blogs.msdn.com/ie/archive/2007/08/29/update-to-internet-explorer-s- cookie-jar.aspx – EricLaw

Problemi correlati