【问题标题】:How to get url of embedding page for a javascript widget如何获取 javascript 小部件的嵌入页面的 url
【发布时间】:2010-11-24 08:56:48
【问题描述】:

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

我想构建一个其他人可以在他们的网站上包含的小部件,并且小部件本身将托管在我的网站上。我只知道一种构建可以嵌入其他网站的小部件的方法:想要嵌入小部件的网站从我的网站获取 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 widget


    【解决方案1】:

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

    var url = location.href;
    

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

    <?php 
    echo $HTTP_REFERER; 
    ?> 
    

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

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

    【讨论】:

    • 但是,我想“发出”页面对应的javascript。 (我的 javascript 是由 php 脚本发出的)。
    • 您想在客户端还是服务器端进行 URL 验证/身份验证?鉴于您的问题被标记为“javascript”,我认为是前者。
    • 我很困惑。假设我想这样做:如果从 1.com 访问小部件,则显示 A,否则显示 B。我如何可靠地做到这一点。事情是,“A”是不应该在代码中可见的东西,除非从 1.com 访问小部件。 (因此,如果它嵌入在 2.com 中,我不想输出 if(location.href == 1.com) write(A) else write (B)。
    • @jp19 - 查看我修改后的答案。
    • 好的。这就是我想知道的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多