Javascript 获取PHP中iframe的父url
我正在创建一个小部件,它将加载到IFrame中,用户将能够将小部件放在自己的网站上。如何获取在javascript和/或PHP中使用IFrame的网站的URL?IFrame加载一个php文件 我在IFrame页面中尝试了“parent.top.location.href”和“parent.document.referer”,但没有定义 我还尝试在IFrame页面中回显“$\u Server[referer]”,它确实返回了IFrame父URL,但是对于某些人来说,操纵referer变量有多容易呢?我不想得到误导性的信息。 目标:我创建了一个小部件,并希望允许注册用户在他们的站点上使用该小部件。我希望能够找出谁在使用该小部件,如果未注册用户在其网站上使用该小部件,则该小部件将不会显示请尝试:Javascript 获取PHP中iframe的父url,javascript,php,url,iframe,parent,Javascript,Php,Url,Iframe,Parent,我正在创建一个小部件,它将加载到IFrame中,用户将能够将小部件放在自己的网站上。如何获取在javascript和/或PHP中使用IFrame的网站的URL?IFrame加载一个php文件 我在IFrame页面中尝试了“parent.top.location.href”和“parent.document.referer”,但没有定义 我还尝试在IFrame页面中回显“$\u Server[referer]”,它确实返回了IFrame父URL,但是对于某些人来说,操纵referer变量有多容易呢
parent.location.href;
或
我也试着回应
IFrame中的“$\u服务器[Referer]”
页面,并返回了IFrame
父URL,但它对用户来说有多容易
操纵推荐人的人
变量
非常简单,但禁用JavaScript也是如此!然而,如果一个网站使用你的
,他们就很难在访问者的UA中伪造推荐人。(如果他们真的坚持隐瞒他们正在使用你的内容,他们也可以代理你的内容。在这种情况下,你唯一的选择就是一开始就不发布。)
<>为了给“合作伙伴”提供内容,你可以考虑给他们提供一个令牌(比如推特/谷歌/…API)。如果未使用(或无效)令牌,则显示错误。如果使用了有效令牌,但推荐人可疑,则应进一步调查。iframe-d页面中的一小块JavaScript可以“取消”页面框架:
if (top != self) {top.location.replace(self.location.href);}
否则,如前所述:iframe可以使用top.location.href
访问父页面的URL
进一步阅读此问题。您可以使用以下PHP代码让父窗口URL在数组中获取值:
<?php
//Getting the parent window parameters
$getURLVar = str_replace("?","",strrchr($_SERVER['HTTP_REFERER'],"?"));
$getURLVar = str_replace("&","=",$getURLVar);
$getURLVar = str_getcsv($getURLVar,"=");
$i=0;
foreach ($getURLVar as $value)
{
if ($i % 2)
$value1[$i]=$value;
else
$value2[$i]=$value;
$i++;
}
$getURLVar =array_combine($value2,$value1);
print_r($getURLVar);
?>
假设您的小部件的URL不执行任何重定向等操作,您应该能够使用:
document.referrer
它应该包含父页面的URL。这似乎就是YouTube在iframe嵌入代码中跟踪的功能。我会使用:
$qStr = explode('?', $_SERVER['HTTP_REFERER']);
$t= explode('&', $qStr[1]);
foreach ($t as $val)
{
$a = explode('=', $val);
$args[$a[0]]=$a[1];
}
// to check the arguments
print_r($args);
// to check the url
echo $qStr[0];
$args将包含我的安全令牌,该令牌将根据url进行哈希检查。“…您应该进一步调查。”-如果他们仍然不合作,则撤销该令牌:)这似乎仅在iframe及其父项都位于同一域时才起作用。见:
$qStr = explode('?', $_SERVER['HTTP_REFERER']);
$t= explode('&', $qStr[1]);
foreach ($t as $val)
{
$a = explode('=', $val);
$args[$a[0]]=$a[1];
}
// to check the arguments
print_r($args);
// to check the url
echo $qStr[0];