IE10 User-Agent, ASP.Net'in Set-Cookie'yi geri göndermemesine neden oluyor (IE10, çerezleri ayarlamıyor)


91

Özet

ASP.Net, Set-CookieIE 10 kullanırken bir başlık geri göndermez . Bunun anlamı, örneğin Form Kimlik Doğrulaması kullanırken IE10 kullanarak bir ASP.Net sitesinde oturum açamazsınız.

Detay

Şu anda eski web uygulamalarımızdan birini IE 10 [Önizleme 2] ile test ediyoruz.

Form Kimlik Doğrulaması kullanarak oturum açmaya çalışırken Set-Cookie, kullanıcı aracısı IE 10'a aitse yanıtta bir başlık almıyoruz . Bunu boş bir .Net 2 ve .Net 4 sitesi ile denedik.

Buna inanamadığımız / inanamayacağımız için, HTTP'yi takip et isteğini manuel olarak çalıştırdık telnet- tüm normal araçları kullandıktan sonra - ve aynı yanıtı aldık.

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

Yukarıdaki HTTP isteği Set-Cookieyanıtta hayır döndürür . Yine de, Kullanıcı-Aracıyı basitçe değiştirirsek Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)işe yarıyor!

Bunu başka biri kopyalayabilir mi? Standart olmayan URL modellerini etkileyen bir sorun dışında IE10 tanımlama bilgileriyle ilgili bilinen herhangi bir sorun bulamıyorum.

Düzeltme

Sonra devio bir çözüm ile, orijinal yanıt gönderdiniz, nullptr artık olduğu onayla vardır bunun için düzeltme .

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

Gelecekte başvurmak için daha kullanışlı olduğu için düzeltmeyi ana soruya yükselttim, ancak lütfen bahsedilen kullanıcılara oy verin.


1
Not - yukarıdaki örnek, bizden bir alma isteği üzerine (Response.SetCookie () kullanarak) bir tanımlama bilgisi ayarlamamızdı
isNaN1247

BrowserCaps ile başka bir olası çözüm : stackoverflow.com/a/13474958/1191905
Anton Skovorodko

Düzeltmeyi IIS'ye mi yoksa istemci makineye mi uyguluyoruz?
Arcadian

@ magic-c0d3r bu, .NET'in kendisi için bir düzeltmedir, bu nedenle IIS'yi barındıran makineye (yani web sunucusu) uygulanmalıdır
isNaN1247

3
.NET 2.0 / 3.5 için düzeltme de ilgi çekici olabilir: support.microsoft.com/kb/2600100
fortboise

Yanıtlar:


66

MS Connect'te bu girdi bulundu , davranış tanınan bir hatadır.

Önerilen Geçici Çözüm (girişten):

== Geçici Çözüm ==

Bu arada, çalışmasını sağlamak ve ileride benzer sorunları önlemek için, aşağıdakilerle ~ \ App_Browsers \ BrowserFile.browser dosyası kullanıyorum:

<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
Aman tanrım ... bu biraz hata - IE10'un piyasaya sürüldüğü tarihte tüm ASP.Net sitelerinin yamalanacağından şüpheliyim.
isNaN1247

2
Bunun için teşekkürler. uygulamamızla uyumluluk testimize devam etmeme yardımcı oldu. bunun bizim uygulamamız mı yoksa beta mı olduğunu ilk başta bilmek zordu, ancak geçici bir çözümün olması bizi üretken yaptı
MikeJ

Bu benim için IE10 / Win8 ile çalışıyor, ancak IE10 / Win7 ile DEĞİL. Çok ilginç.
ScottE

1
Bunun bazı insanlar için işe yaramasına şaşırdım çünkü benim için olmadı. Geleceğe daha uygun ve sağlam olduğunu düşündüğüm alternatif bir çözüm için aşağıdaki cookieless = "UseCookies" yanıtına bakın.
mike nelson

71

Sorun, IE10'un çerezsiz bir tarayıcı olduğunu düşünen bazı IIS örneklerinde yatmaktadır (yani çerezleri destekleyemez). Bizim sorunumuzda, sunucu kimlik doğrulama tanımlama bilgisini ayarlıyor ve tarayıcıya geri gönderiyordu, ancak daha sonra sonraki isteklerde tanımlama bilgisini yok sayıyordu.

Çözüm, ya IE10'un tanımlama bilgilerini yapabileceğini bilmesi için tarayıcı yeteneklerini yamalamak (bu sayfada başka bir yanıtta özetlenmiştir) ya da tarayıcının tanımlama bilgilerini yapamayacağını düşünse bile tanımlama bilgilerini kullanmaya zorlamak için varsayılan davranışı değiştirmektir.

Web.config'deki formlar bölümümüze aşağıdakileri ekledik:

cookieless = "Çerezleri Kullan"

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

3
IE10 ile ilgili sorunumuzu çözen
Oleg Yevteyev

1
Diğer çözümleri denedikten ve sunucumuzla uyumlu olmadığını söyleyerek yüklemeyi reddeden düzeltme, bunu denedim. Bizim için sorunu çözen tek şey bu.
Brian Surowiec

Tek yapmam gereken, anında sonuçları görmek için Web.config dosyasını değiştirmek oldu. Bravo
tuespetre

Bunun doğru cevap olduğunu düşünüyorum. Tanımlama bilgisi ayarlanıyordu, böylece fiddler'da her şey iyi görünüyordu ve ASP.NET onu mükemmel bir şekilde tekrar okuyabiliyordu (bir test sayfası oluşturduğumda) ancak Forms Auth bunu görmezden geliyordu. Bu, Forms Auth için ciddi bir sınırlamadır, ancak düzeltmeniz her zaman olması gerektiği gibi çalışmasını sağlar!
mike nelson

1
Bu, IIS'ye yama uygulamaktan çok daha iyi ve savunulabilir bir çözümdür.
generalnetworkerror

33

Bu sorun için bir düzeltme var [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (önceki KB'nin yerini alır)

Ayrıca [2], bunun 2012 yılının Ocak ayında Windows Update'e gireceğini öne sürüyor.

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


3
Harika, bunun için teşekkürler - İleride başvurmak üzere sorunun ana gövdesine olan bağlantıyı destekledim.
isNaN1247

2
Onaylamak. Şu an itibariyle hala bir hata (08/2012). Düzeltmeyi deneyeceğim.
Eric Nguyen

12
hala bir hata 04/2013 - wtf?
Scott Selby

KB Düzeltmesini güncellememize rağmen hala bu sorunu çözüyoruz. Tarayıcı dosyalarını da Web csproj'a ekledim. Hiçbiri yardımcı olmadı. Yardımcı olan şey, Güvenilir Siteler iletişim kutusuna bir "site" eklememiz oldu. Şimdi, tek oturum açmada marketplace uygulamasından bir IFrame dışına yönlendiriyoruz. Bu yönlendirmeyi ele almanın daha az müdahaleci bir yolu olduğunu varsayıyorum, ancak dokümantasyon bu konuda sınırlı görünüyor.
Paul Shriner

3

Yardımın için teşekkürler. Hayır çalıştı.

  1. Ben dosyayı kopyalanmış siteye etmekC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Komut İstemi'nde Çalıştır C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. IIS'yi yeniden başlatın.

  4. Siteyi test etti ve hatasız çalışıyor.

Geri besleme için tekrar teşekkürler


2

Nullptr yanıtı için bir güncelleme.

Bugün Microsoft KB2600088'i indirmeyi denedim. Bağlantıyı e-posta ile aldıktan sonra üzerine tıkladım ve bana artık mevcut olmadığını söyleyen sayfaya yönlendiriyor.

Şunu deneyin: http://support.microsoft.com/kb/2600217

Bu bağlantı, KB2600088 ve KB2628838'in değiştirilmesidir.

MIcrosoft .Net Framework 4.5 de artık mevcuttur.


Bu güncellemeyi gönderdiğiniz için teşekkürler. Bu bağlantıyla ilgili sorunlar yaşıyordum support.microsoft.com/kb/2600088 esas olarak sunucumdaki IE sayfayı düzgün göstermediğinden. Güncellemeniz bana çok yardımcı oldu.
Daniel Hollinrake

0

Herkesin bahsettiği çeşitli yamaları yükledim ve herhangi bir nedenle sorun çözülmedi.

.NET Framework 4.5 Tam yüklendi ve sorun ortadan kalktı.

4.5 hedefine herhangi bir projeyi güncellemeniz gerekmez. Sadece sunucuya kurun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.