IE Problemas com cookies dentro de iframe (facebook)

Posted on setembro 16, 2012. Filed under: Facebook, Tips | Tags:, , , |

Introdução

Tive um problema um tanto quanto curioso. Após criar uma app no facebook e usá-la dentro de um Page Tab, que permite acessar a app dentro de uma fan page do facebook, tive um problema de acesso dentro da aplicação após a criação da sessão do facebook. O problema ocorre somente no IE, com a página da app sendo carregada dentro de um iframe. Na página inicial, após realizado o login no facebook, a aplicação direciona o usuário para uma página interna, onde somente usuários autenticados podem ter acesso. Em todos navegadores, a página interna funcionava perfeitamente. Menos o IE, que perdia a sessão do usuário após o login inicial. Porém, fora do Page Tab, ou seja, fora do iframe, a aplicação funcionava normalmente, até no IE.

Após pesquisas, descobri que por padrão o IE bloqueia third-party cookies. No caso o IE bloqueou os cookies que estavam sendo acessados dentro uma página que estava dentro de um iframe. É uma política de segurança que o IE adota, seguindo uma especificação do W3C conhecida como Platform for Privacy Preferences ou somente P3P. Para resolver o problema foi bem simples. Basta adicionar o header abaixo em todas as páginas php de sua aplicação que setam cookies. Esse header irá permitir que o IE aceite third-party cookies.

header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');

Ah, lembre-se de setar o header no php antes de qualquer saída de texto.

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

7 Respostas to “IE Problemas com cookies dentro de iframe (facebook)”

RSS Feed for Pasqua Tecnologia Comments RSS Feed

Olá Douglas.

Agradeço por compartilhar seu conhecimento.

Comecei a pouco a fazer o primeiro aplicativo para o FaceBook, mas já programo em PHP à alguns anos.

Não sei se já passou por essa situação. Após criar a aplicação, sai da conta do Face para testar o Login e a liberação das permissões do FaceBook, mas ao digitar o endereço do aplicativo, aparece a mensagem no navegador:

“Este conteúdo não pode ser exibido em um quadro ……..”

“Você pode tentar: Abrir este conteúdo em uma nova janela”.

Ao clicar nessa opção de abrir em nova janela, tudo funciona como deveria.

Como é uma questão de navegador, tem como solucinar essa questão?

Desde já agradeço qualquer ajuda.

Abraços e sucesso pra vc.

Att,

Pedro

Obrigado pelo contato Pedro!

Esse problema acontece somente com o IE? ou com todos navegadores?
Caso seja somente com o IE, tente adicionar o header abaixo no seu script php! (Logo no ínicio). (No lugar do header que eu citei no artigo).


<?php
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

Obrigado e boa sorte!

Olá,

Existe um jeito de fazer isso para o Safari?
Ele também bloqueia os third-party cookies.

Att,

Robson

Olá Robson!

Pelo que andei pesquisando, não há uma forma de habilitar third-party cookies através de headers no Safari como é feito no IE.

Alguns dizem que a versão >= 5.1.7 do Safari não esta bloqueando third-party cookies por padrão (no caso, testado em aplicações do facebook).

Outra alternativa utilizada, é na página inicial da aplicação (no iframe), criar um link de abertura que abre um popup, seta os cookies necessários, fecha a janela e re-carrega a página anterior (iframe). Um exemplo dessa funcionalidade, pode ser visualizada no link abaixo:

http://stackoverflow.com/questions/9930671/safari-3rd-party-cookie-iframe-trick-no-longer-working

Boa Sorte!
Douglas V. Pasqua

Olá Douglas,

Obrigado por responder!

No fim eu acabei encontrando uma solução mais simples, outro header().

A versão do Safari usada no teste foi a 5.1.7 e infelizmente ela também bloqueia os third-party cookies por padrão.

Eu troquei o header() indicado na postagem por esse:

header(‘P3P: CP=”CAO PSA OUR”‘);

Isso funciona também no IE 9.0.8…

Para testar se o browser aceita ou não cookies de terceiros tem esse site:
http://dl.dropbox.com/u/105727/web/3rd/third-party-cookies.html

Ainda não testei em outras versões do IE e do Safari, mas por enquanto está tudo bem.

Att,

Robson Cristian

Obrigado pela dica Robson!
Com certeza será útil para vários desenvolvedores!

Muito obrigado você salvou minha vida! 😀


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: