As variáveis de sessão são perdidas se utilizar FRAMESET no Internet Explorer 6

Traduções de Artigos Traduções de Artigos
Artigo: 323752 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Se implementar um FRAMESET cujas FRAMEs apontem para outros Web sites das redes dos seus parceiros ou da sua própria rede, mas utilizar nomes de domínio de nível superior diferentes, poderá notar no Internet Explorer 6 que todos os cookies que tentar definir nesses FRAMEs parecem ser perdidos. Isto ocorre mais frequentemente como um estado de perda de sessão em aplicações Web ASP (Active Server Pages) ou ASP.NET. Tenta aceder a uma variável do objecto Session que espera que exista e, em seu lugar, é devolvida uma cadeia em branco.

Também poderá detectar este problema num contexto de FRAMEs se as páginas Web utilizarem alternadamente nomes do sistema de nomes de domínio (DNS, Domain Name System) e endereços IP (protocolo Internet).

Causa

O Internet Explorer 6 inclui suporte para o projecto de plataforma de preferências de privacidade (P3P, Platform for Privacy Preferences). A norma P3P indica que se um FRAMESET ou uma janela principal referenciar outro site dentro de uma FRAME ou dentro de uma janela subordinada, o site subordinado será considerado conteúdo de terceiros. O Internet Explorer, que utiliza a definição de privacidade predefinida Médio, rejeita silenciosamente os cookies enviados a partir de sites de terceiros.

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido).

Resolução

Pode adicionar um cabeçalho de política P3P compacta ao conteúdo subordinado e pode declarar que nenhuma acção maliciosa é executada com os dados do utilizador. Se o Internet Explorer detectar uma política satisfatória, o Internet Explorer permitirá a definição do cookie.

Visite o Web site da MSDN que se segue para obter uma lista completa de códigos de política satisfatória e não satisfatória:

Privacidade no Internet Explorer 6
http://msdn.microsoft.com/workshop/security/privacy/overview/privacyie6.asp

Segue-se uma política compacta simples que preenche estes critérios:

P3P: CP="CAO PSA OUR"
				
Este exemplo de código mostra que o site lhe fornece acesso às suas próprias informações de contacto (CAO), que todos os dados analisados são apenas "pseudo-analisados", o que significa que os dados estão ligados à sua persona online e não à sua identidade física (PSA) e que os seus dados não são fornecidos a agências externas para uso dessas mesmas agências (OUR).

Pode definir este cabeçalho se utilizar o método Response.AddHeader numa página ASP. Em ASP.NET, pode utilizar o método Response.AppendHeader. Pode utilizar o snap-in de gestão do IIS (inetmgr) para adicionar a um ficheiro estático.

Siga estes passos para adicionar este cabeçalho a um ficheiro estático:
  1. Clique em Iniciar, clique em Executar e escreva inetmgr.
  2. No painel de navegação esquerdo, clique no ficheiro ou directório adequado do Web site a que pretende adicionar o cabeçalho, clique com o botão direito do rato no ficheiro e clique em Propriedades.
  3. Clique no separador Cabeçalhos de HTTP.
  4. Na caixa de grupo Cabeçalhos de HTTP personalizados, clique em Adicionar.
  5. Escreva P3P para o nome do cabeçalho e, para a cadeia de política compacta, escreva CP=..., em que "..." é o código adequado da política compacta.
Em alternativa, os utilizadores do Internet Explorer podem modificar as definições de privacidade de modo a que lhes seja solicitada a aceitação de conteúdo de terceiros. Os passos que se seguem mostram como modificar as definições de privacidade:
  1. Execute o Internet Explorer.
  2. Clique em Ferramentas e clique em Opções da Internet.
  3. Clique no separador Privacidade e clique em Avançadas.
  4. Clique para seleccionar a caixa de verificação Ignorar a manipulação automática de cookies.
  5. Para permitir a definição de cookies de sessão de ASP e ASP.NET, clique para seleccionar a caixa de verificação Permitir cookies de sessão.
  6. Para receber um pedido para qualquer tipo de cookie de terceiros, clique em Pedir na lista Cookies de terceiros.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o comportamento

  1. Crie um ficheiro denominado TestFrameset.asp.
  2. Aponte uma das FRAMEs do ficheiro para outro computador da rede através de endereços 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 TestFrame.asp de acordo com o seguinte exemplo:
    <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. Vá para TestFrameset.asp e clique em Submissão de formulário.
Após a submissão, note que a entrada Session("TestVar") é impressa como vazia, apesar de dever conter "Hello, world!".

Referências

Para obter mais informações, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
283185 Como gerir cookies no Internet Explorer 6
290333 Description of Platform for Privacy Preferences (P3P) project
293222 The default privacy settings for Internet Explorer 6

Propriedades

Artigo: 323752 - Última revisão: 24 de julho de 2006 - Revisão: 3.0
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer (Programação)
Palavras-chave: 
kbprb KB323752
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

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