说,我有一个 URL 为 site.com 的网站。我如何知道引荐来源网址是否从 iframe 获取我的 URL,如下所示:
<iframe src="http://site.com"></iframe>
或者引荐来源网址在某个站点上单击(!!)此链接,其中链接是通常的 a-tag <a href="http://site.com">go to site</a>
:?
我想在我的服务器端区分这两个。也许,有办法通过 JS 做到这一点?提前致谢。
说,我有一个 URL 为 site.com 的网站。我如何知道引荐来源网址是否从 iframe 获取我的 URL,如下所示:
<iframe src="http://site.com"></iframe>
或者引荐来源网址在某个站点上单击(!!)此链接,其中链接是通常的 a-tag <a href="http://site.com">go to site</a>
:?
我想在我的服务器端区分这两个。也许,有办法通过 JS 做到这一点?提前致谢。
它可以在 javascript 中完成,但不能直接在服务器端完成。但是,您可以通过使用简单的 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 标头来做到这一点。
如果您试图阻止您的网站显示在 iframe 中,最好的方法之一是使用分帧脚本。(请注意,请求/响应仍将发生在您的网络服务器上)。
<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>
Javascript 仅是客户端(除非您使用的是 Node.js),因此无法在服务器端判断某些内容是从 iframe 引用还是从普通超链接引用。
你想这样做的原因是什么?似乎您将不得不找到解决问题的另一种方法。