假设我有一个URL为site.com的网站。我怎么知道如果一个推荐人得到我的URL从iframe,像这样:<iframe src="http://site.com"></iframe>
或referer点击(!! !)这个链接在某些站点,其中链接是一个通常的a标签:<a href="http://site.com">go to site</a>
?
我想在服务器端区分这两个。也许,有一种方法可以通过JS?
可以在javascript中完成,但不能直接在服务器端完成。但是,您可以通过以下两种情况之一的重定向将此信息传递给服务器:
if (window.self === window.top) {
// you're not in an iframe
} else {
// in an iframe (or other frames), act accordingly
}
可选的,如果你只是想阻止你的网站在iframe中被查看,你可以通过发送X-Frame-Options头来做到这一点
Javascript仅是客户端(除非您使用Node.js),所以没有办法告诉服务器端是否从iframe或普通超链接引用的东西。
你想做这件事的原因是什么?看来你得另想办法解决你的问题了。
如果你想阻止你的网站在iframe中显示,最好的方法之一就是使用破框脚本。(请注意,请求/响应仍然会在您的web服务器上发生)。
在你不希望被"裱框"的任何文件的<head>
中包括以下内容。
<style id="antiClickjack">body{display:none !important;}</style>
<script type="text/javascript">
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>