Pesquisar K
Appearance
Appearance
O portal da Layers é exibido dentro de um iframe no web e de uma WebView no app mobile. Diferentemente de um navegador comum, esses contextos têm restrições de segurança adicionais — e qualquer uma delas pode impedir que a sua página seja carregada.
As três causas mais comuns são descritas abaixo. Abra o DevTools do navegador (aba Console) com o portal aberto e localize a mensagem de erro:
| Mensagem no console | Causa |
|---|---|
Refused to display '...' in a frame because it set 'X-Frame-Options' to '...' | X-Frame-Options |
Refused to frame '...' because an ancestor violates the Content Security Policy | Content Security Policy (CSP) |
Mixed Content: ... was loaded over HTTPS, but requested an insecure resource | Mixed Content |
O cabeçalho HTTP X-Frame-Options instrui o navegador a bloquear a página caso ela seja carregada dentro de um frame.
| Valor | Comportamento |
|---|---|
DENY | Bloqueia em qualquer frame |
SAMEORIGIN | Permite apenas se o frame estiver no mesmo domínio |
Se o seu servidor retorna qualquer um desses valores, o portal não irá carregar.
Remova o cabeçalho X-Frame-Options ou substitua-o pelo CSP frame-ancestors (ver seção abaixo), que oferece controle mais granular.
Se precisar manter o cabeçalho, use ALLOWALL (não recomendado para produção em geral, mas válido se a página não contém dados sensíveis):
X-Frame-Options: ALLOWALLA diretiva frame-ancestors dentro do cabeçalho Content-Security-Policy controla quais origens podem embutir a sua página em um frame. É o substituto moderno do X-Frame-Options e tem precedência sobre ele nos navegadores atuais.
Content-Security-Policy: frame-ancestors 'none'
Content-Security-Policy: frame-ancestors 'self'Adicione as origens da Layers à diretiva frame-ancestors:
Content-Security-Policy: frame-ancestors https://*.layers.educationSe precisar manter 'self' também:
Content-Security-Policy: frame-ancestors 'self' https://*.layers.educationTIP
frame-ancestors aceita wildcards de subdomínio (*.layers.education), o que cobre todas as instâncias whitelabel da Layers com uma única entrada.
Mixed content ocorre quando uma página carregada via HTTPS tenta carregar recursos via HTTP. Navegadores e WebViews modernos bloqueiam esse tipo de requisição por padrão.
No contexto de portais, o problema mais comum é a URL do próprio portal cadastrada com http:// nas configurações do app, enquanto a Layers é servida via https://.
Mixed Content: The page was loaded over HTTPS, but requested an insecure resourcehttps:// em vez de http://.