好的,这是我的情况。
我有一个页面index.php,它是mainsite(flash网站)
我有另一个名为iframe.php的页面,其中包含index.php的iframe
另一页,test.php。里面有2个链接,第一个链接直接到index.php,另一个链接到iframe.php
我测试过:
我点击第一个链接,当我跟踪/回显HTTP_REFERER时,它显示“test.php”,但是
我点击第二个链接,当我跟踪/回显HTTP_REFERER时,它会显示“iframe.php”。
为什么显示“iframe.php”? HTTP_REFERER对iframe不起作用吗?
当我点击第二个链接时,有没有得到“test.php”?
源代码:index.php
<html>
<head> // Some headers information
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
<?php
if(!empty($_SERVER['HTTP_REFERER'])){
?>
flashvars.link = '<?php echo $_SERVER['HTTP_REFERER']; ?>';
<?php
}
?>
var params = {};
var attributes = {};
swfobject.embedSWF("main.swf, "content", "100%", "100%", "9", "expressInstall.swf", flashvars, params, attributes);
</script>
</head>
<body>
<div id="content">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
</div>
</body>
</html>
iframe.php的源代码
<html> headers tag
...
<body>
<center><iframe src="index.php" mce_src="index.php" frameborder="0" height="500" scrolling="no" width="500"></iframe></center>
</body>
</html>
test.php的源代码:
....
<a href="iframe.php" target="_blank">This is Iframe</a> <br><br>
....
<a href="index.php" target="_blank">This is normal link</a> <br><br>
答案 0 :(得分:1)
在任何一种情况下,您都会看到index.php
的输出。原因如下:
情景1)
当您从index.php
中的链接点击test.php
时,会加载index.php
(test.php
作为HTTP_REFERER
)。
情景2)
当您从iframe.php
中的链接点击test.php
时,会加载iframe.php
,index.php
会在<iframe>
标记中加载iframe.php
(HTTP_REFERER
}作为{{1}})。
答案 1 :(得分:0)
不幸的是,没有。 iframe内显示的页面的HTTP_REFERER值始终是包含iframe的父页面。
无论如何,HTTP_REFERER往往有点棘手。如果你可以避免围绕它建立任何重要的逻辑,那么这样做是个好主意。
我认为你正在使用php - 也许你可以使用session来存储test.php加载时访问的最后一页?在test.php上,设置$_SESSION['referringPage'] = 'test.php';
。然后在index.php上,您读取$_SESSION['referringPage']
的值,无论页面是否在iframe中加载,您都会获得相同的信息。