Agen Pengguna IE10 menyebabkan ASP.Net tidak mengirim kembali Set-Cookie (IE10 tidak menyetel cookie)

91

Ringkasan

ASP.Net tidak mengirim kembali Set-Cookieheader saat menggunakan IE 10. Artinya misalnya Anda tidak dapat login ke situs ASP.Net menggunakan IE10 saat menggunakan Forms Authentication misalnya.

Detail

Kami sedang menguji salah satu aplikasi web lawas kami terhadap IE 10 [Pratinjau 2].

Saat mencoba masuk menggunakan Autentikasi Formulir, kami tidak mendapatkan Set-Cookietajuk dalam respons jika agen pengguna adalah IE 10. Kami telah mencoba ini dengan situs .Net 2 dan .Net 4 kosong.

Karena kami tidak dapat / tidak percaya, kami bahkan menjalankan permintaan mengikuti HTTP secara manual telnet- setelah menggunakan semua alat biasa - dan mendapatkan respons yang sama.

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

Permintaan HTTP di atas mengembalikan no Set-Cookiedalam respons. Namun jika kita hanya mengubah User-Agent agar Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)berfungsi!

Adakah yang bisa meniru ini? Saya tidak dapat menemukan masalah yang diketahui dengan cookie IE10 selain masalah yang memengaruhi pola URL non-standar.

Perbaikan terbaru

Setelah devio memposting jawaban asli, dengan solusi, nullptr telah mengkonfirmasi bahwa sekarang ada perbaikan terbaru untuk ini .

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

Saya telah mempromosikan hotfix ke pertanyaan utama karena ini hanya handier untuk referensi di masa mendatang, tetapi harap lakukan pemungutan suara dari pengguna yang disebutkan.

isNaN1247
sumber
1
Catatan - contoh di atas berasal dari kami mengatur cookie pada permintaan get (menggunakan Response.SetCookie ())
isNaN1247
Solusi lain yang mungkin dengan browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko
Apakah kita menerapkan perbaikan panas ke IIS atau mesin klien?
Arcadian
@ magic-c0d3r ini adalah perbaikan terbaru untuk .NET itu sendiri sehingga harus diterapkan ke mesin yang menghosting IIS (yaitu server web)
isNaN1247
3
Perbaikan terbaru untuk .NET 2.0 / 3.5 juga mungkin menarik: support.microsoft.com/kb/2600100
fortboise

Jawaban:

66

Menemukan entri ini di MS Connect , perilakunya adalah bug yang dikenali.

Solusi yang Disarankan (dari entri):

== Solusi ==

Sementara itu untuk membuatnya berfungsi dan untuk menghindari masalah serupa di masa mendatang, saya menggunakan file ~ \ App_Browsers \ BrowserFile.browser dengan berikut ini:

<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
sumber
7
Ya ampun ... itu sedikit bug - Saya sangat meragukan semua situs ASP.Net akan ditambal pada saat rilis IE10.
isNaN1247
2
Terima kasih untuk ini. itu membantu saya melakukan pengujian kompatibilitas dengan aplikasi kami. pada awalnya sulit untuk mengetahui apakah itu aplikasi kami atau beta, tetapi memiliki solusi membuat kami produktif
MikeJ
Ini bekerja untuk saya dengan IE10 / Win8, tetapi BUKAN IE10 / Win7. Sangat aneh.
ScottE
1
Saya terkejut ini berhasil untuk beberapa orang karena tidak untuk saya. Lihat jawaban cookieless = "UseCookies" di bawah ini untuk solusi alternatif yang menurut saya lebih tahan lama dan kuat.
mike nelson
71

Masalahnya terletak pada beberapa contoh IIS yang berpikir bahwa IE10 adalah browser tanpa cookie (yaitu tidak dapat mendukung cookie). Dalam kasus masalah kami, server menyetel cookie otentikasi dan mengirimkannya kembali ke browser, tetapi kemudian mengabaikan cookie pada permintaan berikutnya.

Solusinya adalah dengan menambal kemampuan browser sehingga ia tahu IE10 dapat melakukan cookie (diuraikan dalam jawaban lain di halaman ini), atau mengubah perilaku default untuk memaksanya menggunakan cookie meskipun menurutnya browser tidak dapat melakukan cookie.

Kami baru saja menambahkan yang berikut ini ke bagian formulir kami di web.config:

cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Dave Sumter
sumber
3
yang memperbaiki masalah kami dengan IE10
Oleg Yevteyev
1
Setelah mencoba solusi lain, dan hotfix yang menolak untuk menginstal mengatakan itu tidak kompatibel dengan server kami, saya mencoba ini. Itu satu-satunya hal yang memperbaiki masalah kami.
Brian Surowiec
Yang harus saya lakukan adalah mengubah Web.config untuk melihat hasil langsung. Bravo
tuespetre
Saya rasa ini adalah jawaban yang benar. Cookie sedang disetel sehingga semuanya tampak baik-baik saja di fiddler dan ASP.NET dapat membacanya kembali dengan sangat baik (ketika saya menyiapkan halaman pengujian) tetapi Forms Auth mengabaikannya. Ini adalah batasan serius dari Forms Auth tetapi perbaikan Anda membuatnya berfungsi sebagaimana mestinya!
mike nelson
1
Ini adalah solusi yang jauh lebih baik dan dapat dipertahankan dari menambal IIS.
kesalahan jaringan umum
33

Ada perbaikan terbaru yang tersedia untuk masalah ini [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (menggantikan KB sebelumnya)

Juga, [2] menyarankan bahwa ini akan mengenai Pembaruan Windows pada Januari 2012.

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

Derek Slager
sumber
3
Brilian, terima kasih untuk ini - Saya telah mempromosikan tautan ke bagian utama pertanyaan untuk referensi di masa mendatang.
isNaN1247
2
Konfirmasi. Itu masih bug sampai sekarang (08/2012). Saya akan mencoba perbaikan terbaru.
Eric Nguyen
12
masih bug 04/2013 - wtf?
Scott Selby
Kami masih mengalami masalah ini meskipun kami memperbarui Perbaikan Terbaru KB. Saya juga menambahkan file browser ke Web csproj. Sepertinya tidak ada yang membantu. Apa yang membantu, adalah kami menambahkan "situs" ke dialog Situs Tepercaya. Sekarang kami mengalihkan IFrame dari aplikasi marketplace dengan sistem masuk tunggal. Saya berasumsi bahwa ada cara yang kurang invasif untuk menangani pengalihan ini, tetapi dokumentasi tampaknya terbatas pada masalah tersebut.
Paul Shriner
3

Terima kasih atas bantuannya. Tidak berhasil.

  1. Saya menyalin file dari situs keC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Jalankan Di Command Prompt C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Mulai ulang IIS.

  4. Menguji situs dan berfungsi tanpa kesalahan apa pun.

Sekali lagi terima kasih atas Umpan baliknya

pengguna2191793
sumber
2

Pembaruan untuk jawaban nullptr.

Saya mencoba hari ini untuk mengunduh Microsoft KB2600088. Setelah menerima link melalui email, saya mengkliknya lalu mengarahkan saya ke halaman yang mengatakan bahwa itu tidak lagi tersedia.

Coba ini: http://support.microsoft.com/kb/2600217

Link tersebut merupakan pengganti KB2600088 dan KB2628838.

MIcrosoft .Net Framework 4.5 juga tersedia sekarang.

oski
sumber
Terima kasih telah memposting pembaruan ini. Saya mengalami masalah dengan tautan ini support.microsoft.com/kb/2600088 terutama karena IE di server saya tidak menampilkan laman dengan benar. Pembaruan Anda sangat membantu saya.
Daniel Hollinrake
0

Menginstal berbagai tambalan yang disebutkan semua orang dan untuk alasan apa pun masalahnya tidak terselesaikan.

Menginstal .NETFramework 4.5 Penuh dan masalahnya hilang.

Anda tidak perlu memperbarui proyek apa pun untuk menargetkan 4,5. Instal saja di server.

Nate Cook
sumber