iframe recusou a conexão: por que acontece e como resolver

iframe recusou a conexão

iframe recusou a conexão: causas e soluções, com verificador | We.Inc

Por que um iframe mostra "recusou a conexão": X-Frame-Options ou CSP frame-ancestors na página incorporada. Cole os cabeçalhos de resposta dela para ver o veredito e copie a correção para o servidor.

A caixa cinza de "recusou a conexão" significa que a página dentro do seu iframe disse ao navegador para não ser incorporada. Ela faz isso com um cabeçalho de resposta X-Frame-Options (DENY ou SAMEORIGIN) ou com uma regra frame-ancestors na Content-Security-Policy. Só o servidor do site incorporado pode liberar isso. Cole os cabeçalhos dele abaixo para ver qual regra está bloqueando você.

O que cada valor de cabeçalho significa para o seu iframe

Esse erro não é uma falha de rede e não há nada errado com a sua tag iframe. O navegador buscou a página, leu um cabeçalho que proíbe a incorporação e substituiu o conteúdo por um erro. O motivo é a proteção contra clickjacking: uma página que qualquer um pode incorporar pode ser coberta com botões invisíveis. A solução depende de qual servidor enviou o cabeçalho.

Perguntas frequentes

Posso contornar o recusou a conexão a partir da minha página?

Não. A regra é aplicada pelo navegador do visitante em nome do site incorporado, e nenhum atributo no seu iframe consegue sobrescrevê-la. Os únicos caminhos são mudar os cabeçalhos do site incorporado, usar uma URL de incorporação que o site fornece para iframes ou colocar um link.

Por que meu próprio site se recusa a carregar no próprio iframe?

Verifique se há X-Frame-Options: DENY ou frame-ancestors 'none'. Os dois bloqueiam qualquer página pai, incluindo páginas do mesmo domínio. Troque para SAMEORIGIN ou frame-ancestors 'self'. Lembre que um subdomínio ou uma porta diferente é outra origem.

Devo usar X-Frame-Options ou frame-ancestors?

Use frame-ancestors, porque ele pode listar vários pais permitidos e vence sempre que os dois estão presentes. Se você também enviar X-Frame-Options, mantenha-o coerente com a regra da CSP para não confundir a próxima pessoa que ler a configuração.

Por que um link de vídeo ou de mapa recusa a conexão?

A página comum de assistir ou do local normalmente envia um cabeçalho de incorporação, enquanto o serviço publica um endereço de incorporação separado, feito para iframes, que costuma ficar em Compartilhar e depois Incorporar. Nosso gerador de código de incorporação converte links compatíveis nesses endereços para você.

O frame-ancestors verifica todos os frames pai?

Sim. Se o seu iframe está dentro de outro iframe, todos os ancestrais até a página do topo precisam corresponder à política, não só o pai direto.

Leia o cabeçalho, não o erro

Como corrigir em um servidor que você controla

Quando o site não é seu

Correções de servidor para copiar

Cada exemplo libera o próprio site mais um parceiro. Troque https://partner.example pela origem que deve poder incorporar você, ou use 'none' para bloquear todo mundo.

always mantém o cabeçalho também nas páginas de erro. Remova qualquer linha antiga de X-Frame-Options para que as duas regras não fiquem divergentes.

Apache (.htaccess ou virtual host)

Precisa do mod_headers. Header always set substitui qualquer valor anterior do mesmo cabeçalho.

Express com Helmet

O Helmet define X-Frame-Options como SAMEORIGIN por padrão. Desligar isso e definir frame-ancestors mantém uma única fonte de verdade.

Next.js (next.config.js)

headers() adiciona cabeçalhos de resposta a cada rota correspondente. As plataformas de hospedagem podem adicionar os próprios, então confira a resposta em produção depois.

Verificador de cabeçalhos de resposta

Cole os cabeçalhos de resposta da página dentro do iframe. Tudo roda nesta página; nada é buscado.

Cabeçalhos de resposta da página incorporada

Origem da página que contém o iframe

Origem da página incorporada

Restaurar os cabeçalhos de exemplo

Veredito

Esta página pai pode incorporar a página.

O navegador vai se recusar a mostrar esta página no iframe.

Ainda não há um veredito claro.

Bloqueado pela Content-Security-Policy: frame-ancestors 'none'.

Permitido pelo frame-ancestors: {v} corresponde à origem pai.

Bloqueado pelo frame-ancestors: nenhuma fonte da lista corresponde a {v}.

O X-Frame-Options está presente, mas é ignorado, porque o frame-ancestors decide.

Bloqueado pelo X-Frame-Options: DENY.

Permitido pelo X-Frame-Options: SAMEORIGIN, e as origens coincidem.

Bloqueado pelo X-Frame-Options: SAMEORIGIN, e {v} é uma origem diferente.

ALLOW-FROM é obsoleto e ignorado, então não bloqueia.

O X-Frame-Options tem vários valores diferentes. Envie exatamente um.

A Content-Security-Policy-Report-Only nunca bloqueia; ela foi ignorada.

Nenhum cabeçalho de incorporação encontrado, então qualquer site pode incorporar esta página.

Informe as duas origens como URLs completas, por exemplo https://example.com.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site