IE10 User-Agent bewirkt, dass ASP.Net kein Set-Cookie zurücksendet (IE10 setzt keine Cookies)

91

Zusammenfassung

ASP.Net sendet Set-Cookiebei Verwendung von IE 10 keinen Header zurück. Dies bedeutet, dass Sie sich beispielsweise nicht mit IE10 bei einer ASP.Net-Site anmelden können, wenn Sie beispielsweise die Formularauthentifizierung verwenden.

Detail

Wir testen derzeit eine unserer älteren Web-Apps gegen IE 10 [Vorschau 2].

Beim Versuch, sich mit der Formularauthentifizierung anzumelden, wird Set-Cookiein der Antwort kein Header angezeigt, wenn der Benutzeragent der von IE 10 ist. Wir haben dies mit einer leeren .Net 2- und .Net 4-Site versucht.

Da wir es nicht glauben konnten / wollten, haben wir sogar die folgende HTTP-Anfrage manuell ausgeführt telnet- nachdem wir alle üblichen Tools verwendet hatten - und die gleiche Antwort erhalten.

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

Die obige HTTP-Anforderung gibt Set-Cookiein der Antwort no zurück. Aber wenn wir einfach den User-Agent ändern, Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)funktioniert es!

Kann jemand anderes dies replizieren? Ich kann kein bekanntes Problem mit IE10-Cookies finden, außer einem Problem, das nicht standardmäßige URL-Muster betrifft.

Hotfix

Nachdem devio die ursprüngliche Antwort mit einer Problemumgehung veröffentlicht hat , hat nullptr bestätigt, dass es jetzt einen Hotfix dafür gibt .

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

Ich habe den Hotfix zur Hauptfrage befördert, da er nur zum späteren Nachschlagen einfacher ist, aber bitte stimmen Sie die genannten Benutzer ab.

isNaN1247
quelle
1
Hinweis - das obige Beispiel stammt von uns, als wir ein Cookie für eine Get-Anfrage gesetzt haben (mit Response.SetCookie ())
isNaN1247
Eine andere mögliche Lösung mit browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko
Wenden wir den Hotfix auf IIS oder den Clientcomputer an?
Arcadian
@ magic-c0d3r Dies ist ein Hotfix für .NET selbst, sollte also auf den Computer angewendet werden, auf dem IIS
gehostet wird
3
Der Hotfix für .NET 2.0 / 3.5 kann ebenfalls von Interesse sein: support.microsoft.com/kb/2600100
Fortboise

Antworten:

66

Fand diesen Eintrag auf MS Connect , ist das Verhalten ein erkannter Fehler.

Vorgeschlagene Problemumgehung (aus dem Eintrag):

== Problemumgehung ==

In der Zwischenzeit verwende ich eine Datei ~ \ App_Browsers \ BrowserFile.browser mit den folgenden Eigenschaften, damit es funktioniert und ähnliche Probleme in Zukunft vermieden werden:

<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>
devio
quelle
7
Oh mein Gott ... das ist ein kleiner Fehler - ich bezweifle sehr, dass alle ASP.Net-Sites zum Zeitpunkt der Veröffentlichung von IE10 gepatcht werden.
isNaN1247
2
Danke dafür. Es hat mir geholfen, unsere Kompatibilitätstests mit unserer App durchzuführen. Anfangs war es schwer zu wissen, ob es sich um unsere App oder die Beta handelte, aber eine Problemumgehung machte uns produktiv
MikeJ
Dies funktioniert bei mir mit IE10 / Win8, aber NICHT mit IE10 / Win7. Sehr eigenartig.
ScottE
1
Ich bin überrascht, dass dies für einige Leute funktioniert, weil es für mich nicht funktioniert hat. In der Antwort von cookieless = "UseCookies" finden Sie eine alternative Lösung, die meiner Meinung nach zukunftssicherer und robuster ist.
Mike Nelson
71

Das Problem liegt bei einigen IIS-Instanzen, die glauben, dass IE10 ein browserloser Browser ist (dh Cookies können nicht unterstützt werden). In unserem Problemfall hat der Server das Authentifizierungscookie gesetzt und an den Browser zurückgesendet, das Cookie dann jedoch bei nachfolgenden Anforderungen ignoriert.

Die Lösung besteht darin, entweder die Browserfunktionen so zu patchen, dass IE10 Cookies ausführen kann (siehe eine andere Antwort auf dieser Seite), oder das Standardverhalten zu ändern, um die Verwendung von Cookies zu erzwingen, selbst wenn der Browser keine Cookies ausführen kann.

Wir haben unserem Formularbereich in web.config gerade Folgendes hinzugefügt:

cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Dave Sumter
quelle
3
das hat unser Problem mit IE10 behoben
Oleg
1
Nachdem ich die anderen Lösungen ausprobiert hatte und der Hotfix die Installation verweigerte und angab, dass er nicht mit unserem Server kompatibel war, versuchte ich dies. Es ist das einzige, was das Problem für uns behoben hat.
Brian Surowiec
Alles was ich tun musste, war Web.config zu optimieren, um sofortige Ergebnisse zu sehen. Bravo
Dienstag
Ich denke das ist die richtige Antwort. Das Cookie wurde gesetzt, sodass in Fiddler alles gut aussah und ASP.NET es einwandfrei zurücklesen konnte (als ich eine Testseite einrichtete), aber Forms Auth ignorierte es. Dies ist eine schwerwiegende Einschränkung von Forms Auth, aber Ihr Fix lässt es so funktionieren, wie es immer sein sollte!
Mike Nelson
1
Dies ist eine weitaus bessere und haltbarere Lösung für das Patchen von IIS.
Generalnetworkerror
33

Für dieses Problem ist ein Hotfix verfügbar [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (ersetzt vorherige KB)

[2] schlägt außerdem vor, dass Windows Update im Januar 2012 veröffentlicht wird.

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

Derek Slager
quelle
3
Genial, danke dafür - ich habe den Link zum Hauptteil der Frage als zukünftige Referenz beworben.
isNaN1247
2
Bestätigen. Es ist noch ein Fehler (08/2012). Ich werde den Hotfix versuchen.
Eric Nguyen
12
immer noch ein Bug 04/2013 - wtf?
Scott Selby
Wir haben dieses Problem immer noch, obwohl wir den KB-Hotfix aktualisiert haben. Ich habe auch die Browser-Dateien zum Web-Programm hinzugefügt. Beides schien nicht zu helfen. Was geholfen hat, ist, dass wir dem Dialogfeld "Vertrauenswürdige Sites" eine "Site" hinzugefügt haben. Jetzt leiten wir einen IFrame von der Marktplatz-App bei einmaliger Anmeldung um. Ich gehe davon aus, dass es eine weniger invasive Möglichkeit gibt, mit dieser Weiterleitung umzugehen, aber die Dokumentation scheint in dieser Angelegenheit begrenzt zu sein.
Paul Shriner
3

Danke für die Hilfe. Es hat nein funktioniert.

  1. Ich habe die Datei von der Site nach kopiertC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. In Eingabeaufforderung ausführen C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Starten Sie den IIS neu.

  4. Getestet die Seite und es funktioniert ohne Fehler.

Nochmals vielen Dank für das Feedback

user2191793
quelle
2

Ein Update für nullptr Antwort.

Ich habe heute versucht, Microsoft KB2600088 herunterzuladen. Nachdem ich den Link per E-Mail erhalten hatte, klickte ich darauf und führte mich zu der Seite, auf der steht, dass er nicht mehr verfügbar ist.

Versuchen Sie Folgendes : http://support.microsoft.com/kb/2600217

Dieser Link ersetzt KB2600088 und KB2628838.

MIcrosoft .Net Framework 4.5 ist jetzt ebenfalls verfügbar.

oski
quelle
Vielen Dank für die Veröffentlichung dieses Updates. Ich hatte Probleme mit diesem Link support.microsoft.com/kb/2600088, hauptsächlich weil der IE auf meinem Server die Seite nicht richtig angezeigt hat. Ihr Update hat mir sehr geholfen.
Daniel Hollinrake
0

Installierte die verschiedenen Patches, die alle erwähnen, und aus welchem ​​Grund auch immer, das Problem wurde nicht behoben.

Installierte .NET Framework 4.5 Full und das Problem wurde behoben.

Sie müssen keine Projekte auf Ziel 4.5 aktualisieren. Installieren Sie es einfach auf dem Server.

Nate Cook
quelle