Como faço para obter o siteURL chamando minha página quando é carregado em um iFrame?

StackOverflow https://stackoverflow.com/questions/1284838

  •  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.

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top