如果我托管一个JS文件,我可以识别嵌入它的URL吗?

时间:2011-03-08 10:31:13

标签: php javascript

如果我在我的服务器上托管一个用户可以嵌入其网页的javascript文件,是否可以识别嵌入我文件的URL?

我想我只能让用户请求该文件。

6 个答案:

答案 0 :(得分:3)

不确定

如果您托管JS文件,请说/js/myscript.js

在那里实际上没有脚本,有一个php文件,当为js发出请求时,将提供带有htaccess规则的文件

然后在该PHP文件中,记录引用者,日期和其他任何你想要的东西,然后设置适当的标题并简单地导入js文件

<?php
// log referrer / date to the database
header("Content-type: application/x-javascript");
include 'therealscript.js';
?>

答案 1 :(得分:1)

为了能够知道有人在他们的网站中嵌入你的JS,JS需要能够“打电话回家”并告诉他们原始网站。

虽然这不可能直接实现,但需要考虑一种解决方法:让JS在页面末尾添加一个小图像,并将其src设置为服务器上的php脚本。剩下的就是魔术。

答案 2 :(得分:1)

这将取决于客户端浏览器,但我想大多数会将包含js的页面作为引用者,因此它将在您的服务器访问日志中。 @ cusimar9提到的PHP方法也取决于客户端为您填写引荐来源。

答案 3 :(得分:0)

  

如果我在我的服务器上托管一个用户可以嵌入其网页的javascript文件,是否可以识别嵌入我文件的URL?

window.location.href应该为您提供嵌入文档的网址。您可以通过加载图片将其发送到您的服务器:

url = window.location.href;
img = document.createElement("img");
img.setAttribute("src", "http://myserver.com/counthit?url="+url);

或者,您可以在服务器端捕获HTTP_REFERER标头。

请注意,这些值都可以由各个客户端伪造。它们不能用于任何安全相关的事情!但是,它们在收集统计数据或获取使用托管脚本的网站概述方面相当可靠。

答案 4 :(得分:0)

你可以使用黑客, 在你的javascript文件中。 创建一个img元素,并为其分配一个域的src。 例如

http://www.mysite.com/getURL.php?theurl=SOME_VALUE;

其中SOME_VALUE可以在javascript中轻松计算,如:

window.location.protocol + "//" + window.location.host

有些浏览器可能会将其视为不安全行为。

答案 5 :(得分:0)

通常,它取决于浏览器,但是,标准指定了HTTP标头,该标头随每个HTTP请求一起发送,该资产是属于要在“referrer”中设置的网页的一部分,并且所有浏览器都符合此标准。 这是一个简短的解释:

  

http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14

此标头将由大多数浏览器发送,具体取决于您的网络服务器 - 每次向此资源发出的请求都可以捕获并记录此标头。

更糟糕的解决方案是 - 因为您正在运行脚本 - 向请求跟踪实用程序发送请求。如果我必须采用该选项,我会将跟踪实用程序设置为服务器页面,并将其托管在标记中 - 这样服务器的响应不必是图像,而是javascript - 并且为此 - 空字符串为但是,回复足够清楚 - 您可以通过回复函数触发回复功能,从DOM中删除添加的跟踪代码。

这两种方式都会为你带来大量的日志记录,而第二种方式的优势在于你可以更轻松地编写一个更复杂的计数器,然后只是一个堆积日志文件,但它可以通过第一种方式完成好了(再次 - 实现取决于您的Web服务器)。

然而,出于这个原因 - 嵌入式脚本在其运行的网页上具有巨大的功能,并且可以引入或更改几乎任何,无论该脚本的来源是什么 - 它都被计算在内作为一个不好的习惯嵌入你的页面脚本,你无法控制他们的内容,因此 - 我不会推荐它作为一种策略。