IE10 User-Agent khiến ASP.Net không gửi lại Set-Cookie (IE10 không thiết lập cookie)


91

Tóm lược

ASP.Net không gửi lại Set-Cookietiêu đề khi sử dụng IE 10. Có nghĩa là bạn không thể đăng nhập vào trang ASP.Net bằng IE10 khi sử dụng Xác thực Mẫu chẳng hạn.

Chi tiết

Chúng tôi hiện đang thử nghiệm một trong những ứng dụng web cũ của mình trên IE 10 [Bản xem trước 2].

Khi cố gắng đăng nhập bằng Xác thực Mẫu, chúng tôi không nhận được Set-Cookietiêu đề trong phản hồi nếu tác nhân người dùng là của IE 10. Chúng tôi đã thử điều này với trang web .Net 2 và .Net 4 trống.

Bởi vì chúng tôi không thể / sẽ không tin điều đó, chúng tôi thậm chí đã chạy yêu cầu HTTP theo cách thủ công thông qua telnet- sau khi sử dụng tất cả các công cụ thông thường - và nhận được phản hồi tương tự.

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

Yêu cầu HTTP ở trên trả về không có Set-Cookietrong phản hồi. Tuy nhiên, nếu chúng ta chỉ thay đổi User-Agent để Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)nó hoạt động!

Có ai khác có thể lặp lại điều này không? Tôi không thể tìm thấy bất kỳ sự cố đã biết nào với cookie IE10 ngoài sự cố ảnh hưởng đến các mẫu URL không chuẩn.

Hotfix

Sau khi diabo đăng câu trả lời ban đầu, với một giải pháp khác, nullptr đã xác nhận rằng hiện có một hotfix cho điều này .

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

Tôi đã quảng bá hotfix cho câu hỏi chính vì nó đơn giản hơn để tham khảo trong tương lai, nhưng vui lòng bỏ phiếu cho những người dùng được đề cập.


1
Lưu ý - ví dụ trên là do chúng tôi đặt cookie theo yêu cầu nhận (sử dụng Response.SetCookie ())
isNaN1247

Một giải pháp khả thi với browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko

Chúng tôi có áp dụng bản sửa lỗi nóng cho IIS hoặc máy khách không?
Arcadian

@ ma thuật-c0d3r đây là một hotfix cho .NET bản thân vì vậy nên được áp dụng cho các máy chủ IIS (tức là máy chủ web)
isNaN1247

3
Các hotfix cho .NET 2.0 / 3.5 cũng có thể quan tâm: support.microsoft.com/kb/2600100
fortboise

Câu trả lời:


66

Tìm thấy mục này trên MS Connect , hành vi là một lỗi đã được công nhận.

Cách giải quyết được đề xuất (từ mục nhập):

== Giải pháp thay thế ==

Trong thời gian chờ đợi để làm cho nó hoạt động và tránh các sự cố tương tự trong tương lai, tôi sử dụng một tệp ~ \ App_B Browse \ BrowserFile.browser với các nội dung sau:

<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
Ôi trời ... đó là một chút lỗi - tôi thực sự nghi ngờ rằng tất cả các trang web ASP.Net sẽ được vá vào thời điểm phát hành IE10.
isNaN1247

2
cảm ơn vì điều đó. nó đã giúp tôi bắt đầu thử nghiệm khả năng tương thích với ứng dụng của chúng tôi. Lúc đầu, thật khó để biết đó là ứng dụng của chúng tôi hay là bản beta, nhưng có một giải pháp giúp chúng tôi làm việc hiệu quả
MikeJ

Điều này phù hợp với tôi với IE10 / Win8, nhưng KHÔNG phải IE10 / Win7. Rất lạ.
ScottE

1
Tôi ngạc nhiên vì điều này có hiệu quả với một số người vì nó không phù hợp với tôi. Hãy xem câu trả lời của cookieless = "UseCookies" bên dưới để biết một giải pháp thay thế mà tôi nghĩ là bằng chứng mạnh mẽ hơn trong tương lai.
mike nelson

71

Vấn đề nằm ở một số trường hợp IIS nghĩ rằng IE10 là một trình duyệt không có cookieless (tức là không thể hỗ trợ cookie). Trong trường hợp sự cố của chúng tôi, máy chủ đã đặt cookie xác thực và gửi nó trở lại trình duyệt, nhưng sau đó bỏ qua cookie trong các yêu cầu tiếp theo.

Giải pháp là vá các khả năng của trình duyệt để nó biết IE10 có thể thực hiện cookie (được nêu trong một câu trả lời khác trên trang này) hoặc thay đổi hành vi mặc định để buộc nó sử dụng cookie ngay cả khi nó cho rằng trình duyệt không thể thực hiện cookie.

Chúng tôi vừa thêm phần sau vào phần biểu mẫu của mình trong web.config:

cookieless = "UseCookies"

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

3
mà cố định vấn đề của chúng tôi với IE10
Oleg Yevteyev

1
Sau khi thử các giải pháp khác và hotfix từ chối cài đặt nói rằng nó không tương thích với máy chủ của chúng tôi, tôi đã thử cách này. Đó là điều duy nhất đã khắc phục sự cố cho chúng tôi.
Brian Surowiec

Tất cả những gì tôi phải làm là tinh chỉnh Web.config để xem kết quả ngay lập tức. Bravo
tuespetre

Tôi nghĩ đây là câu trả lời chính xác. Cookie đang được thiết lập để mọi thứ trông ổn trong fiddler và ASP.NET có thể đọc lại nó một cách hoàn hảo (khi tôi thiết lập trang thử nghiệm) nhưng Forms Auth đã bỏ qua nó. Đây là một hạn chế nghiêm trọng của Forms Auth nhưng cách khắc phục của bạn giúp nó hoạt động như bình thường!
mike nelson

1
Đây là một giải pháp tốt hơn nhiều và có thể sử dụng được từ việc vá lỗi IIS.
generalnetworkerror,

33

Hiện có một bản sửa lỗi nóng cho sự cố này [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (thay thế KB trước đó)

Ngoài ra, [2] gợi ý rằng điều này sẽ xuất hiện trên Windows Update vào tháng 1 năm 2012.

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


3
Brilliant, cảm ơn vì điều này - Tôi đã quảng bá liên kết đến nội dung chính của câu hỏi để tham khảo trong tương lai.
isNaN1247

2
Xác nhận. Nó vẫn là một lỗi cho đến nay (08/2012). Tôi sẽ thử cập nhật nóng.
Eric Nguyen

12
vẫn là một lỗi 04/2013 - wtf?
Scott Selby

Chúng tôi vẫn gặp sự cố này ngay cả khi chúng tôi đã cập nhật KB Hotfix. Tôi cũng đã thêm các tệp trình duyệt vào Web csproj. Dường như không giúp được gì. Điều gì đã giúp ích, là chúng tôi đã thêm một "trang web" vào hộp thoại Trang web đáng tin cậy. Bây giờ chúng tôi đang chuyển hướng IFrame từ ứng dụng thị trường khi đăng nhập một lần. Tôi giả định rằng có một cách ít xâm lấn hơn để xử lý chuyển hướng này, nhưng tài liệu có vẻ hạn chế về vấn đề này.
Paul Shriner

3

Cảm ơn bạn đã giúp đỡ. Nó hoạt động không.

  1. Tôi đã sao chép tệp từ trang web vàoC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Chạy trong Command Prompt C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Khởi động lại IIS.

  4. Đã kiểm tra trang web và nó hoạt động mà không có bất kỳ lỗi nào.

Cảm ơn một lần nữa vì đã phản hồi


2

Bản cập nhật cho câu trả lời nullptr.

Hôm nay tôi đã thử tải xuống Microsoft KB2600088. Sau khi nhận được liên kết qua email, tôi nhấp vào nó thì nó dẫn tôi đến trang báo rằng nó không còn nữa.

Hãy thử cái này: http://support.microsoft.com/kb/2600217

Liên kết đó là phần mềm thay thế cho KB2600088 và KB2628838.

MIcrosoft .Net Framework 4.5 hiện cũng có sẵn.


Cảm ơn đã đăng bản cập nhật này. Tôi gặp sự cố với liên kết support.microsoft.com/kb/2600088 này chủ yếu là do IE trên máy chủ của tôi không được hiển thị trang đúng cách. Cập nhật của bạn đã giúp tôi rất nhiều.
Daniel Hollinrake

0

Đã cài đặt các bản vá lỗi khác nhau mà mọi người đề cập đến và vì bất kỳ lý do gì mà sự cố vẫn chưa được giải quyết.

Đã cài đặt .NET Framework 4.5 Full và sự cố đã biến mất.

Bạn không phải cập nhật bất kỳ dự án nào để nhắm mục tiêu 4.5. Chỉ cần cài đặt nó trên máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.