Pop-ups divididos: uma nova abordagem para pop-ups da Web no teste para desenvolvedores

Natalia Markoborodova
Natalia Markoborodova

No Chrome 132, os desenvolvedores podem participar de um teste para desenvolvedores e conhecer uma nova abordagem de pop-ups da Web: pop-ups particionados. Este teste de desenvolvedor está disponível apenas para computadores e ainda não está disponível no Android.

Um pop-up particionado é um novo tipo de pop-up projetado para interações de curta duração, como logins ou confirmações rápidas. Ele carrega conteúdo da Web com dois recursos exclusivos:

Por que precisamos de pop-ups particionados?

Os pop-ups particionados foram criados para manter as propriedades de privacidade de um iFrame particionado e as propriedades de segurança de pop-ups.

À medida que mais usuários ativam a navegação sem cookies de terceiros, os fluxos que dependem do armazenamento de dados em um pop-up para recuperação em um contexto de terceiros mais tarde (por exemplo, para manter a sessão do usuário em vários sites) podem ser interrompidos. O objetivo dos pop-ups particionados é resolver esse problema.

Como funcionam os pop-ups particionados?

O armazenamento de cada pop-up particionado é particionado para o abridor. O particionamento de armazenamento limita o acesso a dados entre sites, reduzindo os riscos de rastreamento e ataques de injeção de script. Saiba como funciona o particionamento de armazenamento na nossa documentação.

Considere um site opener.example que incorpora conteúdo de third-party.example. Para mostrar conteúdo personalizado em opener.example, o usuário precisa fazer login em third-party.example. Quando os cookies de terceiros são bloqueados no navegador do usuário, o fluxo de pop-up atual é o seguinte:

  1. O usuário clica em um botão de login.
  2. Uma caixa de diálogo é aberta.
  3. O usuário faz login no contexto de nível superior de third-party.example, e um cookie de autenticação não particionado é gravado.
  4. O conteúdo third-party.example incorporado em opener.example não tem acesso aos próprios cookies de nível superior gravados em third-party.example quando apresentado em um contexto próprio. Isso acontece porque o cookie de autenticação não é particionado e, portanto, é um cookie de terceiros.
Um fluxo de autenticação do usuário pop-up em que um iframe de "third-party.example" está incorporado em "opener.example" e "third-party.example" é aberto em um pop-up. O iframe não pode acessar o próprio cookie não particionado porque ele foi definido no contexto de nível superior de um pop-up "third-party.example".
Fluxo de pop-up: o iframe third-party.example incorporado no opener.example não tem acesso ao próprio cookie não particionado definido no contexto de nível superior do pop-up third-party.example.

O armazenamento de um pop-up particionado é particionado para o abridor. Isso muda as etapas 3 a 4 dos fluxos:

  1. O usuário faz login no contexto de nível superior de third-party.example. Como ele é aberto em um pop-up particionado, o armazenamento é particionado por opener.example.

  2. O conteúdo third-party.example incorporado no opener.example tem acesso ao próprio cookie definido no pop-up, já que eles compartilham o mesmo armazenamento particionado.

Um fluxo de autenticação do usuário pop-up particionado. Uma janela pop-in de "third-party.example" é aberta em "opener.example". Um iframe dentro desse pop-in pode acessar cookies definidos pelo contexto de nível superior de "third-party.example".
Fluxo de pop-ups particionados: o iframe third-party.example incorporado no opener.example tem acesso ao próprio cookie particionado definido no contexto de nível superior do pop-up third-party.example, porque o cookie é particionado por opener.example.

O objetivo dos pop-ups particionados é ajudar o usuário a entender que o abridor e o pop-up estão relacionados:

  • Quando o usuário muda para outra guia, o pop-in fica invisível e inacessível automaticamente, da mesma forma que um modal só fica visível quando a guia de abertura está ativa.
  • Quando o usuário retorna à guia de abertura, o pop-up é mostrado novamente.
  • O usuário não pode fazer mudanças na barra de endereço do navegador do pop-up.
Particionamento de armazenamento com pop-ups particionados: um iframe incorporado na página de abertura pode acessar o armazenamento definido no pop-up.

Faça um teste

O Chrome 132 apresenta um teste para desenvolvedores do recurso de pop-ups particionados. Isso significa que o recurso vai estar disponível com uma flag. Confira como testar pop-ups particionados:

  1. Verifique se você está usando o Chrome 132 ou mais recente.
  2. Navegue até chrome://flags#partitioned-popins e ative a flag de recurso.
  3. Reinicie o Chrome.
  4. Teste nossa demonstração.

Usar pop-ups particionados no seu site

Para usar um pop-up particionado no seu site, chame o método window.open() com o parâmetro popin transmitido:

window.open("third-party-popin.example", "_blank", "popin");

Envie feedback

Estamos testando pop-ups divididos e queremos o feedback dos desenvolvedores. Confira alguns possíveis cenários de caso de uso:

  • Fluxo de autenticação do usuário. Se você tiver implementado um fluxo de autenticação personalizado e a autenticação ocorrer em um domínio diferente do seu site (por exemplo, os usuários do site.example fazem login no auth-site.example), tente abrir a página de autenticação em um pop-up para usar o cookie de sessão na página de abertura.
  • Conteúdo incorporado. Use pop-ups particionados para mostrar mais conteúdo de um widget de terceiros, como uma caixa de diálogo de configurações, uma imagem ou um PDF (ou outro conteúdo que normalmente é carregado em um pop-up), renderizado em uma janela maior. Nesse caso, o objetivo dos pop-ups particionados é manter o estado da sessão do usuário entre o widget de terceiros e o site.

Se você tiver algum desses cenários nas suas soluções, outros casos de uso em mente ou quiser ajudar a moldar o futuro desse recurso, teste-o e nos avise:

  • Você teve algum problema?
  • Você tem sugestões para melhorar a experiência do usuário?
  • Você tem alguma sugestão para melhorar a interface? Especificamente, você acha que a interface indica claramente que o abridor e o pop-up estão relacionados?
  • Você acha esse recurso útil?
  • Há outros casos de uso para os pop-ups particionados?

Envie uma solicitação no GitHub para compartilhar sua opinião.