gpt4 book ai didi

javascript - 如何防止我的网站页面被加载到其他网站的 iframe 中?

转载 作者:太空狗 更新时间:2023-10-29 15:30:28 26 4
gpt4 key购买 nike

我们有很多游戏网站,其中我在我的服务器上托管独家游戏,我不想从我的服务器访问我的游戏到其他网站。我想限制他们从我的服务器访问我的内容。

例如,假设我有一个名为 www.abc.com 的网站,其源路径类似于 www.abc.com/games/abcgame.swf,其中我举办了我的独家比赛。因为我希望其他网站所有者不要访问此内容。如果他们窃取此 url 并尝试访问,那么我想显示一些自定义消息,例如“找不到游戏”或“请访问 www.abc.com 来玩这个游戏”之类的东西。等等

任何人都可以有任何想法来实现这个功能吗?

最佳答案

第一个解决方案是使用 X-Frame-Options header 以防止将页面加载到 iframe。 X-Frame-Options可以指定两个值之一:SAMEORIGIN,它只允许来自同源的 iframe 显示此内容,并且 deny,这会阻止这样做的任何 iframe。但是此 header 不是 HTTP 规范的一部分,是由 Microsoft 引入的,因此并非所有浏览器都支持此 header 。 X-Frame-Options 的例子:

X-Frame-Options: SAMEORIGIN

以防某些旧浏览器不支持 X-Frame-Options header 。您可以尝试一种称为 FrameKiller 的技术.但是,正如该链接中指出的那样,存在局限性。

The user agent does not support JavaScript.

The user agent supports JavaScript but the user has turned support off.

The user agent's JavaScript support is flawed or partially implemented.

想法是使用 javascript 来检测您的页面是否已加载到 iframe 中。有许多方法可以实现帧 killer 脚本。

根据您的要求,您可以像这样实现一个框架 killer 脚本:尝试访问您的父窗口以读取window.location。如果他们将您的页面包含在他们的 iframe 中,代码将抛出异常(跨域)

示例代码:

window.onload = function(){
try
{
if (window.parent && window.parent.location.hostname !== "www.abc.com"){
throw new Error();
}
}
catch (e){
alert("Please visit www.abc.com to play this game.");
//You could do whatever you want here
}
}

关于javascript - 如何防止我的网站页面被加载到其他网站的 iframe 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com