gpt4 book ai didi

javascript - 如何获取 javascript 小部件的嵌入页面的 url

转载 作者:行者123 更新时间:2023-11-30 13:37:22 25 4
gpt4 key购买 nike

(改写问题,因为否则很少有意见)。

我想构建一个小部件,其他人可以将其包含在他们的网站上,并且小部件本身将托管在我的网站上。我知道只有一种方法可以构建可以嵌入其他网站的小部件:想要嵌入小部件的网站从我的网站获取一个 javascript,它在页面上执行“document.write”。像这样的东西:

<script language="javascript" src="http://www.my-website-that-will-host-the-widget.com/javascript-emitter.php?id=1234&width=200&bordercolor=000000&bg=ffffff&textcolor=000000"></script> 

现在,我想让一个特定的小部件只能从特定的域访问。为此,我想知道可靠地嵌入我的小部件的页面的 URL。没有人应该能够欺骗它。例如,如果我在嵌入代码中有一个显式变量,人们就可以更改它。

我该怎么做? (我还希望为嵌入我的小部件的人编写最少的代码)。

问候,

日本


解释一:

假设我想这样做:如果从 1.com 访问小部件,则显示 A,否则显示 B。我如何才能可靠地做到这一点。问题是,除非从 1.com 访问小部件,否则“A”不应在代码中可见。 (因此,如果嵌入2.com,我不想输出if(location.href == 1.com) write(A) else write (B)


注1:

(顺便说一句,如果有人觉得我的方法不好/效率不高并且可以建议更好的方法/教程等,那将是很大的帮助。大多数谷歌查询都会为您提供解释如何构建/获取小部件的网站“您的站点”......通常指向允许您构建由它们托管的小部件的网站,我想了解如何构建可由我站点的其他网站嵌入的小部件)

最佳答案

在客户端的javascript中,可以使用location.href获取当前页面的url:

var url = location.href;

如果您根本不想为禁止域输出任何 javascript,您可以在您的 php 中使用全局变量 $HTTP_REFERER 检查 HTTP_REFERER header 。在你的 javascript-emitter.php 脚本中试试这个:

<?php 
echo $HTTP_REFERER;
?>

但是请注意,这并不总是可信的:发送正确的 REFERER header 取决于客户端(浏览器)。当然,如果有人真的想在他们的网站上包含您的小部件,他们可以轻松地请求您的 javascript 服务器端欺骗 REFERER header - 将其设置为您的白名单中的内容 - 然后再将其转发给客户端。

简而言之,您无法轻松、绝对地阻止列入黑名单的网站使用您的小部件。

关于javascript - 如何获取 javascript 小部件的嵌入页面的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264938/

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