O IE11 não envia cookie de sessão quando um link direcionado a uma nova guia é clicado (na primeira solicitação)
-
21-12-2019 - |
Pergunta
Estou tendo problemas para manter a sessão ao abrir uma nova guia inicial (target _blank) do IE11.
Quando fecho todas as instâncias do IE11 e abro um novo navegador e navego até a página de teste (default.aspx), a página armazena um valor na sessão e exibe o ID da sessão na página.Se eu atualizar a página, o ID da sessão permanecerá o mesmo.A página possui um link para si mesma (default.aspx) com destino _blank.Se eu clicar neste link, uma nova aba será aberta, mas o ID da sessão será diferente.Se eu atualizar a janela original, o ID da sessão agora corresponderá à nova janela.
<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<% Session["StoredValue"]="Test"; %>
<div>SessionID: <%=Session.SessionID%></div>
<a href="/default.aspx" target="_blank">New Window</a>
<a href="http://www.google.com" target="_blank">3rd Party Window</a>
</body>
</html>
Parece que esse problema ocorre apenas na primeira janela do mesmo domínio aberta em uma nova guia (verifiquei o problema com target="_blank" e segurando CTRL enquanto clicava no link).
- Quando assisto ao tráfego de biscoitos com Fiddler, posso ver que o cookie da sessão é enviado normalmente na solicitação inicial do padrão.aspx.Quando clico no link para abrir a página em uma nova guia, o cookie da sessão não está sendo enviado nos cabeçalhos da solicitação.
- Se eu reiniciar o navegador, vá para a página de teste, abra uma nova guia manualmente e cole o destino do link nele, o cookie é enviado corretamente nos cabeçalhos de solicitação e a sessão da nova guia corresponde à guia original conforme o esperado.
- Se eu reiniciar o navegador, vá para a página de teste, abra o Google a partir de um link direcionando _bank na página de teste e clique no link Abrindo a página de teste em uma nova guia O cookie também é enviado corretamente nos cabeçalhos da solicitação e na sessão Da nova janela corresponde à janela original como esperado.
Acredito que seja um problema do lado do cliente, mas o site está sendo executado no Windows Server Standard 2008 R2 SP 1 em um site integrado 4.0 com .NET 4.51 instalado (também tentei com apenas 4.5 instalado).
O cliente é o Windows 7 de 64 bits executando o IE11 (11.0.9600.16476).Verifiquei o problema em outras máquinas que executam o Windows 7 do IE11 e confirmei que não é um problema no IE10 do Windows 8 no modo desktop.Tudo funciona conforme o esperado no Chrome e no Firefox.
Verifiquei que o problema persiste mesmo se eu:
- Mova a segurança de Média Alta para Média
- Desativar modo protegido
- Altere a privacidade para aceitar todos os cookies
- Adicione o site à lista de sites da zona Intranet local ou Sites confiáveis
- Defina uma política de privacidade compacta P3P nos cabeçalhos de resposta, informando que nenhuma informação é coletada ou usada.
- Defina uma política de privacidade compacta P3P nos cabeçalhos de resposta que normalmente seria aceita para permitir cookies de terceiros em um iframe em versões anteriores do IE.
- Altere as configurações de estado da sessão ASP.NET do site para cookieless="UseCookies" ou "false" ou remova o atributo completamente (ASP.NET State Server).
Alguma ideia?Alguém mais viu esse problema ou algo semelhante?
Solução
Este é um bug ativo de acordo com a Microsoft.Aparentemente, não há maneira do servidor de corrigir isso.
Outras dicas
Não é uma solução, mas uma pista:Notamos um comportamento semelhante e o rastreamos em solicitações para root/browserconfig.xml, fazendo com que o usuário não fosse autenticado.O servidor enviou um novo cookie de sessão porque o Windows não estava enviando o existente.As solicitações subsequentes enviaram o novo valor do cookie de sessão.Mudamos nosso servidor para procurar essa solicitação e não definir cookies de resposta.
Esta não é uma solução, mas:
Tentar clique com o meio em vez disso.Se isso funciona para você 100% das vezes (funcionou para mim)
js: links with target='_blank' on ie remove defaultBehaviour and trigger middle click.
Problema resolvido.
O mesmo problema ocorre com meu login, mas tentamos resolvê-lo alterando algumas configurações no IE11 ou em outros navegadores problemáticos.
Goto Tools => Opções da Internet => Privacidade Clique no botão Sites.Adicione mydomain.com e clique no botão Permitir.Reinicie seu navegador.