Ho qualche problema interessante che mi ha totalmente abbandonato.IE8 non applica i cookie su tutto il dominio in modo appropriato - solo su una macchina
Ho un codice di produzione che ho creato che legge un cookie token IBM LTPA impostato da una macchina gestita da un altro reparto, lo convalida e lo utilizza per accedere a un sistema gestito dal mio gruppo (impostando alcuni cookie speciali). Questo processo di single sign-on è completamente trasparente per l'utente finale e ha funzionato bene in produzione per diversi anni su tutti i browser.
Recentemente, ho notato che non funziona correttamente sulla mia macchina di sviluppo con IE8. Di recente ho eseguito l'aggiornamento da Vista a Windows 7. Non sono sicuro che questo non funzionasse sulla mia macchina prima o dopo l'aggiornamento, poiché è qualcosa che ha funzionato per così tanto tempo e non ho motivo di testarlo regolarmente. FireFox 3.5 e Chrome 4 dev su questa stessa macchina funzionano entrambi come previsto. IE6 su XP SP3 virtuale su questa macchina funziona correttamente. IE8 su più macchine a casa funziona bene (Windows Server 2008 e Windows 7).
Per scopi diagnostici, ho eliminato tutti i dati memorizzati nella cache dal mio dev IE8 (cache WinInet) per iniziare con una lavagna pulita. Ho licenziato Fiddler per tracciare il processo e determinare cosa non funzionava. Quello che ho trovato è stato piuttosto interessante, e non riesco a spiegarlo.
Dopo aver effettuato l'accesso al sito iniziale - consente di chiamarlo ltpa.domain.com, i cookie di sessione vengono spostati dal server come previsto con l'intestazione Set-Cookie. Verifico che il dominio sia correttamente impostato su .domain.com e che il percorso sia /. Tutte le richieste successive dal browser dopo l'accesso trasferiscono tutti i cookie sul server con ogni richiesta come previsto. In realtà, questo è un portale e vi sono alcuni contenuti aggiuntivi da, diciamo, portal.domain.com che vengono recuperati; tutti i cookie sono passati correttamente anche a quel server.
Ora per il bit interessante - quando faccio una richiesta a myserver.domain.com - i cookie a livello di dominio impostati da ltpa.domain.com non vengono inviati a myserver.domain.com, anche se essi dovrebbe essere. Il processo Single Sign-on reindirizza automaticamente a ltpa.domain.com se i cookie sono mancanti (e invia un cookie al client che il processo di login ltpa utilizza per reindirizzare) - il cookie a livello di dominio impostato da myserver non viene rinviato a ltpa.domain.com.
Ancora, questo solo si verifica su questa istanza di IE8 sulla mia macchina di sviluppo di cui sono a conoscenza. Questo processo viene utilizzato migliaia di volte al giorno con una base di utenti abbastanza ampia e non abbiamo ricevuto altri reclami da parte degli utenti finali, quindi nessuna indicazione che si tratti di un problema sistemico con IE8 o qualcosa del genere.
Il comportamento mi sembra che stia trattando myserver.domain.com e ltpa.domain.com come domini separati, anche se non lo sono.
Ci sono due punti di interesse che potrebbero essere degni di menzione - ma potrebbero essere delle false lamentele, come è sempre stato in questo modo, e non ha mai causato un problema.
DNS è un po 'funky qui. LTPA.domain.com risolve l'IP esterno. Tuttavia, myserver.domain.com risolve l'IP interno. Effettuando una ricerca inversa su quell'IP viene indicato il nome DNS interno, ad esempio myserver.internal.domain.com. Ho teorizzato che forse IE8 stava facendo una specie di ricerca inversa per prevenire attacchi basati su DNS - così ho modificato il mio file HOSTS e ho indirizzato myserver.domain.com all'IP esterno a scopo di test. Ho verificato in Fiddler che le richieste andavano all'IP esterno, ma non ha fatto alcuna differenza con i cookie. Non erano ancora passati.
In precedenza, myserver.domain.com era in "Siti attendibili" all'interno delle pagine di configurazione di sicurezza di WinInet di IE. L'ho rimosso e l'altro sito che c'era. Chiamiamo questa macchina, my2.domain.com; questa macchina per coincidenza (o forse no?) non viene passata neanche dai cookie di dominio impostati da ltpa.domain.com. In questo caso, non ho bisogno che i cookie siano passati, ma l'ho verificato comunque per vedere se questo problema stava interessando altre macchine. Nella barra di stato di IE, ltpa.domain.com, portal.domain.com e myserver.domain.com si visualizzano tutti nell'area "Internet". La cosa strana è che my2.domain.com mostra ancora "Siti attendibili" nella barra di stato, anche se non è elencato nella finestra di dialogo ?? Sì, ho riavviato dopo aver apportato le modifiche.
Altri punti di nota.
sono a conoscenza degli altri problemi con IE e non .com domini, valori dei cookie citati e altre anomalie di biscotti - di cui qui su StackOverflow e altrove sull'interwebs. Nessuno di questi si applica. Ho letto l'articolo IEInternals di Eric Law su cookie interni - http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx
Non ci sono componenti aggiuntivi funky abilitati in IE. Solo Flash, Silverlight, assistente per l'accesso a Live ID e Fiddler2.
Non ci sono regole InPrivate per filtrare i contenuti specifici del mio dominio.
Dal momento che sono su un laptop, ho provato IE8 dalla rete domestica (dopo un riavvio) per escludere i problemi DNS. Ho lo stesso comportamento a casa, quindi il funky DNS non è un problema per quanto ne so.
Ho attraversato tutte le impostazioni di IE, più volte, pensando che avrei potuto perdere un'oscura impostazione dei cookie. Le impostazioni sulla privacy sono su "Medio" e non ci sono siti con gestione speciale.
Con gli strumenti di sviluppo, ho verificato che 'Aggiorna sempre dal server' sia deselezionato.
Non penso che questo sia qualcosa che posso segnalare a Microsoft poiché non riesco a riprodurre il problema da nessun'altra parte.
Quindi, a questo punto, sono in perdita. A corto di attivare una sorta di modalità diagnostica all'interno di IE8 di cui non sono a conoscenza, o che ha il codice necessario per eseguire il debug ... Ho esaurito le buone idee.
Sto pensando di aver riscontrato un errore, alcune impostazioni del registro o simili sono state ottimizzate, o qualcosa del genere, da qualche parte è diventato corrotto.
Qualche idea?
"il percorso è \"? Davvero, un backslash? Dovrebbe essere una barra in avanti, anche se non so se sarebbe diverso. +1 per i dettagli però :-) – bobince
Whoops - typo. Corretto. –
Cross-postato sui forum MSDN - http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/b2eac7c9-d51d-485b-9f28-89ce0f99af1b –