O Agente do Usuário do IE10 faz com que o ASP.Net não envie Set-Cookie (o IE10 não configura cookies)

91

Resumo

ASP.Net não envia de volta um Set-Cookiecabeçalho ao usar o IE 10. O que significa que, por exemplo, você não pode fazer login em um site ASP.Net usando o IE10 ao usar a autenticação de formulários, por exemplo.

Detalhe

No momento, estamos testando um de nossos aplicativos da web legados no IE 10 [Amostra 2].

Ao tentar fazer o login usando autenticação de formulários, não obtemos um Set-Cookiecabeçalho na resposta se o agente do usuário for o do IE 10. Tentamos fazer isso com um site .Net 2 e .Net 4 em branco.

Como não podíamos / não acreditaríamos, até executamos a solicitação de acompanhamento HTTP manualmente telnet- depois de usar todas as ferramentas usuais - e obtivemos a mesma resposta.

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

A solicitação HTTP acima retorna não Set-Cookiena resposta. No entanto, se simplesmente mudarmos o User-Agent para Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)que funcione!

Alguém mais pode replicar isso? Não consigo encontrar nenhum problema conhecido com os cookies do IE10, exceto um problema que afeta os padrões de URL não padrão.

Hotfix

Depois que devio postou a resposta original, com uma solução alternativa, nullptr confirmou que agora existe um hotfix para isso .

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

Promovai o hotfix para a questão principal, pois é apenas mais prático para referência futura, mas por favor, vote a favor dos usuários mencionados.

isNaN1247
fonte
1
Observação - o exemplo acima foi
criado
Outra solução possível com browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko
Aplicamos o hot fix ao IIS ou à máquina cliente?
Arcadian
@ magic-c0d3r este é um hotfix para o .NET em si, então deve ser aplicado à máquina que hospeda o IIS (ou seja, o servidor da web)
isNaN1247
3
O hotfix para .NET 2.0 / 3.5 também pode ser interessante: support.microsoft.com/kb/2600100
fortboise

Respostas:

66

Encontrada esta entrada no MS Connect , o comportamento é um bug reconhecido.

Solução alternativa sugerida (da entrada):

== Solução alternativa ==

Enquanto isso, para fazer funcionar e evitar problemas semelhantes no futuro, uso um arquivo ~ \ App_Browsers \ BrowserFile.browser com o seguinte:

<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
fonte
7
Nossa ... isso é um bug - duvido muito que todos os sites ASP.Net tenham o patch feito até o lançamento do IE10.
isNaN1247 de
2
obrigado por isso. isso me ajudou a continuar nossos testes de compatibilidade com nosso aplicativo. foi difícil saber no início se era nosso aplicativo ou o beta, mas ter uma solução alternativa nos tornou produtivos
MikeJ
Isso funciona para mim com IE10 / Win8, mas NÃO IE10 / Win7. Muito estranho.
ScottE
1
Estou surpreso que isso funcione para algumas pessoas porque não funcionou para mim. Veja a resposta cookieless = "UseCookies" abaixo para uma solução alternativa que eu acho mais robusta e à prova de futuro.
mike nelson
71

O problema reside em algumas instâncias do IIS pensando que o IE10 é um navegador sem cookies (ou seja, não suporta cookies). Em nosso caso de problema, o servidor estava configurando o cookie de autenticação e enviando-o de volta ao navegador, mas estava ignorando o cookie nas solicitações subsequentes.

A solução é corrigir os recursos do navegador para que ele saiba que o IE10 pode fazer cookies (descrito em outra resposta nesta página) ou alterar o comportamento padrão para forçá-lo a usar cookies mesmo se achar que o navegador não pode fazer cookies.

Acabamos de adicionar o seguinte à nossa seção de formulários em web.config:

cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Dave Sumter
fonte
3
que corrigiu nosso problema com o IE10
Oleg Yevteyev
1
Depois de tentar as outras soluções, e o hotfix se recusou a instalar dizendo que não era compatível com o nosso servidor, tentei isso. Foi a única coisa que resolveu o problema para nós.
Brian Surowiec
Tudo que eu tive que fazer foi ajustar o Web.config para ver resultados imediatos. Bravo
tuespetre
Acho que essa é a resposta correta. O cookie estava sendo configurado para que tudo parecesse bem no Fiddler e o ASP.NET foi capaz de lê-lo perfeitamente bem (quando eu configurei uma página de teste), mas o Forms Auth estava ignorando. Esta é uma limitação séria do Forms Auth, mas sua correção faz com que funcione como sempre deveria funcionar!
mike nelson
1
Esta é uma solução muito melhor e sustentável com o patch do IIS.
generalnetworkerror
33

Há um hotfix disponível para esse problema [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (substitui o KB anterior)

Além disso, [2] sugere que isso chegará ao Windows Update em janeiro de 2012.

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

Derek Slager
fonte
3
Brilhante, obrigado por isso - promovi o link para o corpo principal da pergunta para referência futura.
isNaN1247 de
2
Confirme. Ainda é um bug a partir de agora (08/2012). Vou tentar o hotfix.
Eric Nguyen
12
ainda um bug 04/2013 - wtf?
Scott Selby
Ainda estamos enfrentando esse problema, embora tenhamos atualizado o KB Hotfix. Também adicionei os arquivos do navegador ao Web csproj. Nenhum dos dois pareceu ajudar. O que ajudou é que adicionamos um "site" à caixa de diálogo Sites confiáveis. Agora estamos redirecionando o aplicativo IFrame do marketplace para logon único. Presumo que haja uma maneira menos invasiva de lidar com esse redirecionamento, mas a documentação parece limitada sobre o assunto.
Paul Shriner
3

Obrigado pela ajuda. Funcionou não.

  1. Copiei o arquivo do site paraC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Executar no prompt de comando C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Reinicie o IIS.

  4. Testei o site e funciona sem erros.

Obrigado novamente pelo feedback

user2191793
fonte
2

Uma atualização para a resposta nullptr.

Tentei hoje baixar o Microsoft KB2600088. Após receber o link por e-mail, cliquei nele e ele me levou a uma página que diz que ele não está mais disponível.

Experimente: http://support.microsoft.com/kb/2600217

Esse link é uma substituição para KB2600088 e KB2628838.

MIcrosoft .Net Framework 4.5 também está disponível agora.

Oski
fonte
Obrigado por postar esta atualização. Eu estava tendo problemas com este link support.microsoft.com/kb/2600088 principalmente porque o IE em meu servidor não exibia a página corretamente. Sua atualização me ajudou muito.
Daniel Hollinrake
0

Instalei os vários patches que todos estão citando e por algum motivo o problema não foi resolvido.

Instalei o .NET Framework 4.5 Full e o problema foi embora.

Você não precisa atualizar nenhum projeto para o destino 4.5. Basta instalar no servidor.

Nate Cook
fonte