Como faço para obter o siteURL chamando minha página quando é carregado em um iFrame?
-
18-09-2019 - |
Pergunta
É tão fácil quanto $ ENV { 'HTTP_REFERER'}? ou há alguma outra coisa que eu preciso fazer?
Exemplo: Meu Site: sample.php
Chamando site w / iFrame: somesite.com
Eu quero sample.php quando cargas de ser capaz de usar "somesite.com" para a entrada como uma variável.
Solução
Não há nenhuma diferença entre um quadro embutido e uma página normal. E carregando um quadro embutido inicialmente com src
irá enviar o HTTP referer.
Outras dicas
Em primeiro lugar, sua página não deve dependem na Referer estar presente nem correta: é uma informação que é enviado pelo navegador, e pode:
- será desativada (alguns firewall / antivírus remover essa informação, por exemplo - ou fez algum tempo atrás)
- ou ser alteradas / falsificado (se você pesquisar um pouco, deve haver alguma extensão do Firefox que permite que você fingir isso muito facilmente, por exemplo)
Para mais informações, consulte, por exemplo:
Estas mensagens ambos "concordam" com me ^^
Agora, você pode enventually usá-lo para adicionar algum recurso; Mas você não deve confiar no-lo para o seu site para o trabalho; -)
Para uma forma verdadeiramente confiável para acessar a URL pai, você pode adicionar um parâmetro GET para o src iframe que contém a URL pai quando você incorporá-lo. Você pode usar Javascript para adicionar este automaticamente junto com a incorporação.
Aqui está um exemplo que incorpora o iframe no final da tag <body>
:
var iframe = document.createElement('iframe');
iframe.src = '/sample.php?parent=' + window.location;
document.body.appendChild(iframe);
Você pode então acessar a URL pai de forma confiável a partir de PHP com:
$parent_url = $_GET['parent'];
Como Pascal MARTIN mencionado, você não deve confiar no valor de Referer absolutamente.
Expandindo resposta de Gumbo:. Desde o Referer é transmitida como um cabeçalho dentro de uma solicitação HTTP recuperá-lo dentro de um script carregado em um <iframe>
é exatamente o mesmo que recuperá-lo para qualquer outro script
Quando o navegador solicita a página especificada pelo atributo src
na <iframe>
apresentará uma solicitação HTTP, como que para qualquer outro recurso e irá incluir o valor do cabeçalho Referer
.
O valor do cabeçalho Referer
irá conter o URL da página que hospeda o <iframe>
. Então, se você tinha um script PHP chamado página com-iframe.php e continha <iframe src="sample.php" />
a solicitação HTTP para sample.php poderia ser algo como:
GET /sample.php HTTP/1.1
Host: somesite.com
...
Referer: http://somesite.com/page-with-iframe.php
Em sample.php você usaria $ENV{'HTTP_REFERER'}
para recuperar o valor ea partir daí você pode analisar o hotname somesite.com .