Variáveis da sessão se perdem se você usar o CONJUNTO DE QUADROS no Internet Explorer 6

Traduções deste artigo Traduções deste artigo
ID do artigo: 323752 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Se você implementar um CONJUNTO DE QUADROS cujos QUADROS apontam para outros sites na rede dos seus parceiros ou na sua rede, mas usar nomes de domínio superior diferentes, é possível perceber que os cookies que tenta agrupar naqueles QUADROS Internet Explorer 6 se perderam. Isto acontece mais freqüentemente como um estado de perda de sessão em aplicativos da web ASP (Active Server Pages) ou ASP.NET. Você tenta acessar uma variável no objeto Session que espera que exista e uma string em branco retorna.

Você também vê este problema em um contexto de QUADROS se as páginas da Web alternam entre o uso dos nomes do DNS (Sistema de nomes de domínio) e o uso dos endereços IP.

Causa

O Internet Explorer 6 dá suporte ao Projeto P3P (Platform for Privacy Preferences). O padrão P3P observa que se um CONJUNTO DE QUADROS ou uma janela pai faz referência a outro site dentro de um QUADRO ou dentro de uma janela filho, o site filho é considerado em conteúdo de terceiros. O Internet Explorer, que usa a configuração padrão de privacidade Média, rejeita silenciosamente os cookies enviados pelos sites de terceiros.

Resolução

É possível adicionar um cabeçalho de diretiva compacta P3P no conteúdo filho e declarar que ações mal-intencionadas com os dados do usuário não foram executadas. Se o Internet Explorer detectar uma diretiva satisfatória, então permitirá que o cookie seja definido.

Visite o seguinte site da MSDN para obter uma lista completa de códigos de diretiva satisfatórios e não satisfatórios:

Privacy in Internet Explorer 6 (em inglês)
http://msdn.microsoft.com/library/default.asp?url=/workshop/security/privacy/overview/privacyie6.asp

Segue uma diretiva compacta simples que preenche este critério:

P3P: CP="CAO PSA OUR"
				
Este exemplo de código mostra que o site fornece acesso a própria conta de informação (CAO), que os dados analisados são somente "pseudo-analisados" o que significa que os dados estão conectados à sua persona online e não à sua identidade física (PSA) e que os dados não são fornecidos para quaisquer agências externas para uso de tais agências (OUR).

É possível definir este cabeçalho se usar o método Response.AddHeader em uma página ASP. Em ASP.NET, é possível usar o método Response.AppendHeader. Você pode usar o IIS Management Snap-In (inetmgr) para adicionar um arquivo estático.

Execute as seguintes etapas para adicionar este cabeçalho a um arquivo estático:
  1. Clique em Iniciar, em Executar e digite inetmgr
  2. Na página esquerda de navegação, clique no arquivo ou diretório apropriado no seu site em que você deseja adicionar o cabeçalho, clique com o botão direito do mouse no arquivo e clique em Propriedades.
  3. Clique na guia Cabeçalhos HTTP.
  4. Na caixa de grupo Cabeçalhos HTTP personalizados clique em Adicionar.
  5. Digite P3P para o nome do cabeçalho e para uma string de diretiva compacta, digite CP=..., no qual "..." é o código apropriado para a diretiva compacta.
Como alternativa, os usuários do Internet Explorer podem modificar suas configurações de privacidade para aceitar conteúdo de terceiros. As seguintes etapas mostram como modificar as configurações de privacidade:
  1. Execute o Internet Explorer.
  2. Clique em Ferramentas e em Opções da Internet.
  3. Clique na guia Privacidade e em Avançado.
  4. Marque a caixa de seleção Ignorar manipulação automática de cookies.
  5. Para permitir a configuração de sessões de cookie ASP e ASP.NET, marque a caixa de seleção Sempre permitir cookies por sessão.
  6. Para receber um aviso de qualquer cookie de terceiros, clique em Avisar na lista Cookies secundários.

Situação

Este comportamento é próprio do projeto.

Mais Informações

Etapas para reproduzir o comportamento

  1. Crie um arquivo chamado TestFrameset.asp.
  2. Aponte um dos QUADROS do arquivo para outro computador na rede, pelo endereço IP:
    <HTML>
    
    <FRAMESET ROWS="100%,*">
    <FRAME src="http://111.111.111.111/testFrame.asp"></FRAME>
    <FRAME src="about:blank"></FRAME>
    </FRAMESET>
    
    
    </HTML>
    					
  3. No computador remoto, crie um arquivo TestFrame.asp conforme o exemplo a seguir:
    <HTML>
    
    <BODY>
    
    <%
    
    Response.write "Session var is " & Session("TestVar")
    Session("TestVar") = "Hello, world!"
    
    %>
    
    <BODY>
    
    <FORM METHOD="POST">
    <INPUT type="submit" value="Print TestVar">
    </FORM>
    
    </BODY>
    
    </HTML>
    					
  4. Mova para o TestFrameset.asp e clique em Envio de formulário.
Observe que depois do envio a entrada Session("TestVar") aparece vazia, embora devesse conter o texto "Hello, world!".

Referências

Para obter mais informações, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar em inglês):
283185 Como gerenciar os cookies no Internet Explorer 6
290333 Descrição do Projeto P3P (Platform for Privacy Preferences)
293222 Configurações padrão de privacidade para o Internet Explorer 6

Propriedades

ID do artigo: 323752 - Última revisão: quinta-feira, 28 de setembro de 2006 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer (Programming)
Palavras-chave: 
kbprb KB323752
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com