IE10 User-Agent fa sì che ASP.Net non rispedisca Set-Cookie (IE10 non imposta i cookie)


91

Sommario

ASP.Net non restituisce Set-Cookieun'intestazione quando si utilizza IE 10. Ciò significa che, ad esempio, non è possibile accedere a un sito ASP.Net utilizzando IE10, ad esempio quando si utilizza l'autenticazione dei moduli.

Dettaglio

Attualmente stiamo testando una delle nostre app Web legacy su IE 10 [Anteprima 2].

Quando si tenta di accedere utilizzando l'autenticazione basata su moduli, non si ottiene Set-Cookieun'intestazione nella risposta se l'agente utente è quello di IE 10. Abbiamo provato con un sito .Net 2 e .Net 4 vuoto.

Poiché non potevamo / non ci credevamo, abbiamo persino eseguito manualmente la richiesta HTTP di follow telnet- dopo aver utilizzato tutti gli strumenti usuali - e abbiamo ottenuto la stessa risposta.

GET http://test.ourdomain.co.uk/ HTTP/1.1
Accept: */*
Host: test.ourdomain.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Content-Length: 0

La richiesta HTTP di cui sopra restituisce no Set-Cookienella risposta. Tuttavia, se cambiamo semplicemente lo User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0), funziona!

Qualcun altro può replicarlo? Non riesco a trovare alcun problema noto con i cookie di IE10 diverso da un problema che influisce su pattern URL non standard.

Hotfix

Dopo che devio ha pubblicato la risposta originale, con una soluzione alternativa, nullptr ha confermato che ora è disponibile un hotfix per questo .

http://support.microsoft.com/kb/2600088

Ho promosso l'hotfix alla domanda principale in quanto è più maneggevole per riferimento futuro, ma per favore vota gli utenti menzionati.


1
Nota: l'esempio sopra è stato da noi impostato un cookie su una richiesta get (utilizzando Response.SetCookie ())
isNaN1247

Un'altra possibile soluzione con browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko

Applichiamo l'hotfix a IIS o alla macchina client?
Arcadian

@ magic-c0d3r questo è un hotfix per .NET stesso, quindi dovrebbe essere applicato alla macchina che ospita IIS (ovvero il server web)
isNaN1247

3
Potrebbe interessarti anche l'aggiornamento rapido per .NET 2.0 / 3.5: support.microsoft.com/kb/2600100
fortboise

Risposte:


66

Trovato questa voce su MS Connect , il comportamento è un bug riconosciuto.

Soluzione suggerita (dalla voce):

== Soluzione alternativa ==

Nel frattempo per farlo funzionare e per evitare problemi simili in futuro, utilizzo un file ~ \ App_Browsers \ BrowserFile.browser con quanto segue:

<browsers>
<browser refID="Default">
<capabilities><!-- To avoid wrong detections of e.g. IE10 -->
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>

7
Oh mio ... questo è un po 'un bug - dubito fortemente che tutti i siti ASP.Net verranno aggiornati prima del rilascio di IE10.
isNaN1247

2
grazie per questo. mi ha aiutato ad andare avanti nei nostri test di compatibilità con la nostra app.
All'inizio

Questo funziona per me con IE10 / Win8, ma NON IE10 / Win7. Molto strano.
ScottE

1
Sono sorpreso che questo funzioni per alcune persone perché non ha funzionato per me. Vedi la risposta cookieless = "UseCookies" di seguito per una soluzione alternativa che penso sia più robusta e a prova di futuro.
mike nelson

71

Il problema risiede nel fatto che alcune istanze di IIS pensano che IE10 sia un browser senza cookie (cioè non può supportare i cookie). Nel nostro caso problematico il server stava impostando il cookie di autenticazione e lo inviava al browser, ma poi ignorava il cookie nelle richieste successive.

La soluzione è patchare le funzionalità del browser in modo che sappia che IE10 può eseguire i cookie (delineato in un'altra risposta in questa pagina) o modificare il comportamento predefinito per costringerlo a utilizzare i cookie anche se ritiene che il browser non possa eseguire cookie.

Abbiamo appena aggiunto quanto segue alla nostra sezione dei moduli in web.config:

cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>

3
che ha risolto il nostro problema con IE10
Oleg Yevteyev

1
Dopo aver provato le altre soluzioni e l'hotfix che si rifiutava di installare dicendo che non era compatibile con il nostro server, ho provato questo. È l'unica cosa che ha risolto il problema per noi.
Brian Surowiec

Tutto quello che dovevo fare era modificare Web.config per vedere risultati immediati. Bravo
tuespetre

Penso che questa sia la risposta corretta. Il cookie veniva impostato in modo che tutto andasse bene in Fiddler e ASP.NET è stato in grado di leggerlo perfettamente bene (quando ho impostato una pagina di test) ma Forms Auth lo ignorava. Questa è una grave limitazione di Forms Auth, ma la tua correzione lo fa funzionare come dovrebbe sempre!
mike nelson

1
Questa è una soluzione molto migliore e sostenibile dall'applicazione di patch a IIS.
generalnetworkerror

33

È disponibile un hotfix per questo problema [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (sostituisce KB precedente)

Inoltre, [2] suggerisce che questo arriverà a Windows Update nel gennaio 2012.

2) http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx


3
Fantastico, grazie per questo: ho promosso il collegamento al corpo principale della domanda per riferimento futuro.
isNaN1247

2
Confermare. È ancora un bug al momento (08/2012). Proverò l'hotfix.
Eric Nguyen

12
ancora un bug 04/2013 - wtf?
Scott Selby

Stiamo ancora riscontrando questo problema anche se abbiamo aggiornato l'aggiornamento rapido KB. Ho anche aggiunto i file del browser al Web csproj. Nessuno dei due sembrava aiutare. Ciò che ha aiutato è che abbiamo aggiunto un "sito" alla finestra di dialogo Siti attendibili. Ora stiamo reindirizzando da un IFrame dall'app del marketplace in single sign-on. Presumo che esista un modo meno invasivo per gestire questo reindirizzamento, ma la documentazione sembra limitata in materia.
Paul Shriner

3

Grazie per l'aiuto. Ha funzionato no.

  1. Ho copiato il file dal sito aC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Esegui nel prompt dei comandi C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Riavvia IIS.

  4. Testato il sito e funziona senza errori.

Grazie ancora per il feedback


2

Un aggiornamento per la risposta nullptr.

Ho provato oggi a scaricare Microsoft KB2600088. Dopo aver ricevuto il collegamento via e-mail, ho cliccato su di esso, quindi mi ha portato alla pagina che dice che non è più disponibile.

Prova questo: http://support.microsoft.com/kb/2600217

Questo collegamento sostituisce KB2600088 e KB2628838.

Anche MIcrosoft .Net Framework 4.5 è ora disponibile.


Grazie per aver pubblicato questo aggiornamento. Avevo problemi con questo collegamento support.microsoft.com/kb/2600088 principalmente perché IE sul mio server non visualizzava correttamente la pagina. Il tuo aggiornamento mi ha aiutato molto.
Daniel Hollinrake,

0

Installate le varie patch citate da tutti e per qualsiasi motivo il problema non è stato risolto.

Installato .NET Framework 4.5 completo e il problema è andato via.

Non è necessario aggiornare alcun progetto per target 4.5. Basta installarlo sul server.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.