Estou escrevendo uma pequena página da Web cujo objetivo é enquadrar algumas outras páginas, simplesmente para consolidá-las em uma única janela do navegador para facilitar a visualização. Algumas das páginas que estou tentando enquadrar proíbem o enquadramento e lançam um "Recusou-se a exibir o documento porque a exibição é proibida pelo X-Frame-Options". erro no Chrome. Entendo que essa é uma limitação de segurança (por um bom motivo) e não tenho acesso para alterá-la.
Existe algum método alternativo de enquadramento ou não-enquadramento para exibir páginas em uma única janela que não seja acionada pelo cabeçalho X-Frame-Options?
iframe
frames
x-frame-options
Garen Checkley
fonte
fonte
Respostas:
Eu tive um problema semelhante: estava tentando exibir o conteúdo de nosso próprio site em um iframe (como uma caixa de diálogo no estilo lightbox com o Colorbox ) e onde tínhamos um cabeçalho "X-Frame-Options SAMEORIGIN" em todo o servidor no servidor de origem impedindo que ele seja carregado em nosso servidor de teste.
Isso não parece estar documentado em nenhum lugar, mas se você pode editar as páginas que você está tentando iframe (por exemplo, são suas próprias páginas), basta enviar outro cabeçalho X-Frame-Options com qualquer sequência de caracteres desativada os comandos SAMEORIGIN ou DENY.
por exemplo. para PHP, colocando
na parte superior da página, os navegadores combinam os dois, o que resulta em um cabeçalho de
... e permite carregar a página em um iframe. Isso parece funcionar quando o comando SAMEORIGIN inicial foi definido no nível do servidor e você deseja substituí-lo em um caso de página por página.
Muito bem sucedida!
fonte
X-Frame-Options: SAMEORIGIN
não há como fazer isso dentro do quadro. Você deve usar um pop-up.header_remove
função, desde que você a tenha disponível (> = 5.3.0).Header always unset X-Frame-Options
GOFORIT
(ou outro token inválido arbitrário aleatório) está violando deliberadamente uma medida de segurança aplicada por um servidor; se você tem o controle do servidor (o que você deve fazer por qualquer serviço público real), a coisa certa a fazer é configurar o servidor para não configurar o cabeçalho em primeiro lugar.Se você está recebendo esse erro em um vídeo do YouTube, em vez de usar o URL completo, use o URL incorporado nas opções de compartilhamento. Vai parecer
http://www.youtube.com/embed/eCfDxZxTBW4
Você também pode substituir
watch?v=
comembed/
modohttp://www.youtube.com/watch?v=eCfDxZxTBW4
torna-sehttp://www.youtube.com/embed/eCfDxZxTBW4
fonte
Se você estiver recebendo esse erro ao tentar incorporar um mapa do Google em um
iframe
, precisará adicionar&output=embed
ao link de origem.fonte
&output=embed
ATUALIZAÇÃO 2019: Você pode desvio
X-Frame-Options
em uma<iframe>
usando apenas JavaScript e meu do lado do cliente X-Frame-Bypass Web Component. Aqui está uma demonstração: Hacker News em umX-Frame-Bypass
. (Testado no Chrome e Firefox.)fonte
Adicionando um
para o meu link na guia facebook corrigiu o problema para mim ...
fonte
Existe um plug-in para o Chrome, que descarta essa entrada de cabeçalho (apenas para uso pessoal):
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews
fonte
Se você estiver recebendo esse erro ao tentar incorporar o conteúdo do Vimeo, altere o src do iframe,
de: https://vimeo.com/63534746
para: http://player.vimeo.com/video/63534746
fonte
Eu tive o mesmo problema quando tentei incorporar o moodle 2 no iframe, a solução é
Site administration ► Security ► HTTP security
e verifiqueAllow frame embedding
fonte
Essa é a solução pessoal !!
A única coisa que funcionou para aplicativos do facebook!
fonte
Parece que X-Frame-Options Allow-From https: // ... está depreciado e foi substituído (e é ignorado) se você usar o cabeçalho Content-Security-Policy .
Aqui está a referência completa: https://content-security-policy.com/
fonte
Solução para carregar um site externo em um iFrame, mesmo sendo difícil, a opção x-frame está configurada para negar no site externo.
Se você deseja carregar outro site em um iFrame e receber o
Display forbidden by X-Frame-Options”
erro, poderá superá-lo criando um script proxy do lado do servidor.O
src
atributo do iFrame pode ter um URL parecido com este:/proxy.php?url=https://www.example.com/page&key=somekey
Então proxy.php seria algo como:
Isso passa pelo bloco, porque é apenas uma solicitação GET que pode ter sido uma visita comum à página do navegador.
Esteja ciente: você pode querer melhorar a segurança neste script. Porque os hackers podem começar a carregar páginas da web por meio do seu script de proxy.
fonte
Eu tentei quase todas as sugestões. No entanto, a única coisa que realmente resolveu o problema foi:
Crie um
.htaccess
na mesma pasta onde está o seu arquivo PHP.Adicione esta linha ao htaccess:
Header always unset X-Frame-Options
A incorporação do PHP por um iframe de outro domínio deve funcionar posteriormente.
Além disso, você pode adicionar no início do seu arquivo PHP:
O que, no entanto, não era necessário no meu caso.
fonte
Eu tive o mesmo problema com o mediawiki, porque o servidor negou a incorporação da página em um iframe por motivos de segurança.
Eu resolvi escrever
no arquivo de configuração php mediawiki.
Espero que ajude.
fonte
FWIW:
Tivemos uma situação em que precisávamos matar o nosso
iFrame
quando esse código "disjuntor" apareceu. Então, usei o PHPfunction get_headers($url);
para verificar a URL remota antes de mostrá-la emiFrame
. Para um melhor desempenho, armazenei em cache os resultados em um arquivo para não fazer uma conexão HTTP toda vez.fonte
Eu estava usando o Tomcat 8.0.30, nenhuma das sugestões funcionou para mim. Como estamos procurando atualizar
X-Frame-Options
e configurá-loALLOW
, eis como eu configurei para permitir iframes incorporados:fonte
A única pergunta que tem um monte de respostas. Bem-vindo ao guia que eu gostaria de ter quando estava lutando para fazê-lo funcionar às 10:30 da noite no dia do prazo final ... O FB faz algumas coisas estranhas com aplicativos de tela e, bem, você foi avisado. Se você ainda estiver aqui e tiver um aplicativo Rails que aparecerá atrás de uma tela do Facebook, precisará de:
Gemfile:
config / facebook.yml
config / application.rb
config / inicializadores / omniauth.rb
application_controller.rb
Você precisa de um controlador para ligar a partir das configurações de tela do Facebook, usei
/canvas/
e fiz o percurso ser o principalSiteController
para este aplicativo:login.html.erb
Fontes
fonte
target = '_ pai'
Usando a idéia de Kevin Vella, tentei adicionar esse atributo para formar elementos criados pelo gerador de botões do PayPal. Trabalhou para mim para que o Paypal não abra em uma nova janela / guia do navegador.
fonte
Não tenho certeza de quão relevante é, mas criei uma solução alternativa para isso. No meu site, eu queria exibir o link em uma janela modal que continha um iframe que carrega o URL.
O que fiz foi vincular o evento click do link a essa função javascript. Tudo isso é fazer uma solicitação para um arquivo PHP que verifica os cabeçalhos de URL para X-FRAME-Options antes de decidir se deseja carregar o URL na janela modal ou redirecionar.
Aqui está a função:
Aqui está o código do arquivo PHP que o verifica:
Espero que isto ajude.
fonte
Me deparei com esse problema ao executar um site wordpress. Tentei todo o tipo de coisas para corrigi-lo e não sabia ao certo como, afinal, o problema era porque eu estava usando o encaminhamento de DNS com mascaramento e os links para sites externos não estavam sendo tratados adequadamente. ou seja, meu site estava hospedado em http: //123.456.789/index.html, mas foi ocultado para ser executado em http://somewebSite.com/index.html . Quando inseri http: //123.456.789/index.html no navegador, clicar nesses mesmos links não resultou em problemas de origens de quadros X no console JS, mas executando http://somewebSite.com/index.htmlfez. Para mascarar adequadamente, você deve adicionar os servidores de nomes DNS do host ao seu serviço de domínio, por exemplo, godaddy.com deve ter servidores de nomes, por exemplo, ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com, se você estiver usando digitalocean.com como seu serviço de hospedagem.
fonte
remove_action( 'admin_init', 'send_frame_options_header',10);
para ignorar este problema ...É surpreendente que ninguém aqui tenha mencionado
Apache
as configurações (*.conf
arquivos) do servidor ou.htaccess
o próprio arquivo como causa deste erro. Pesquise seus arquivos de configuração.htaccess
ouApache
, certificando-se de que você não tenha o seguinte definido comoDENY
:Header always set X-Frame-Options DENY
Mudar para
SAMEORIGIN
, faz as coisas funcionarem conforme o esperado:Header always set X-Frame-Options SAMEORIGIN
fonte
A única resposta real, se você não controlar os cabeçalhos da sua fonte desejada no iframe, é procurá-la. Faça com que um servidor atue como cliente, receba a fonte, retire os cabeçalhos problemáticos, adicione CORS, se necessário, e faça ping no seu próprio servidor.
Há uma outra resposta explicando como escrever esse proxy. Não é difícil, mas eu tinha certeza de que alguém já tinha feito isso antes. Foi difícil encontrá-lo, por algum motivo.
Finalmente encontrei algumas fontes:
https://github.com/Rob--W/cors-anywhere/#documentation
^ preferido. Se você precisar de uso raro, acho que você pode simplesmente usar o aplicativo heroku dele. Caso contrário, é um código para executá-lo em seu próprio servidor. Observe com certeza quais são os limites.
Whateverorigin.org
Segunda opção, mas bastante antiga. opção supostamente mais recente em python: https://github.com/Eiledon/alloworigin
então há a terceira opção:
http://anyorigin.com/
O que parece permitir um pouco de uso gratuito, mas o colocará em uma lista pública de vergonha se você não pagar e usar uma quantia não especificada, da qual você só poderá ser removido se pagar a taxa ...
fonte
Não mencionado, mas pode ajudar em alguns casos:
fonte
Use esta linha abaixo, em vez da
header()
função.fonte
Eu tive esse problema e resolvi-o editando o activationd.conf
mudei SAMEORIGIN para GOFORIT e reiniciei o servidor
fonte
Tente isso, acho que ninguém sugeriu isso no tópico. Isso resolverá 70% do seu problema. Em algumas outras páginas, você precisa refazer, eu tenho a solução completa, mas não para o público,
ADICIONE abaixo ao seu iframe
sandbox = "scripts de permissão com a mesma origem e scripts de permissão"
fonte
Edite .htaccess se desejar remover o X-Frame-Options de um diretório inteiro.
E adicione a linha: Cabeçalho sempre desabilitado X-Frame-Options
[conteúdo de: Superando "Exibição proibida por X-Frame-Options"
fonte