2011-07-14 153 views
5

我有一些jQuery插件托管在我的服务器上,但我希望它只对我的访问者可用。我偏执其他网站可能只是链接到我的js文件并窃取我的带宽。 你会如何解决这个问题?如何防止其他网站链接到我的JavaScript文件?

+1

他们为什么需要链接到您的网站?他们可以很好地下载他们在查看您的网站并正确使用它? – Balanivash

+1

如果我要使用你的插件,我最好下载这个JavaScript文件(如果你允许我) - 谁可以知道 - 你可以重命名你的文件,改变功能或做一些其他事情,会打破我的网站。 –

+1

有人可能会吃掉一些带宽;但是,链接到您的JavaScript不会让他们窃取您的流量。事实上,如果你制作你的JavaScript的权利,你可以窃取他们的流量! – evan

回答

1

,你可以使用的.htaccess路由到它的所有请求始终贯穿一个PHP文件中的JavaScript。如果用户代理与您的网站不同,那么它可以发送403,否则它可以使用file_get_contents来返回文件。

希望帮助

有用htaccess的模板: CheckSpelling上 选项-Indexes 选项+的FollowSymLinks

DirectoryIndex index.php 

RewriteEngine on 
RewriteBase /js/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ /js/index.php?p=$1 [L] 
+0

为什么要使用.htaccess将它们发送到一个需要做更多工作的PHP文件,然后将它们发送到阻止他们使用脚本的文件? –

+0

dunno,没想到它。但我使用它,因为我可以上传一个JavaScript文件,然后PHP文件缩小和打包它。加上它有一个跟踪器,以防止相同的文件被加载两次或在单个实例中。 – topherg

4

Cretae在你的站点文件夹的根目录的.htaccess(用于Apache或IIS与ISAPI_Rewrite)

用你的域名替换mysite.com记住所有。已经在来的RewriteCond和反斜杠与页面替换要送他们时,有试图窃取您的带宽

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteRule .*\. (js|json)$ http://mysite.com/theif.txt 

并theif.txt添加到您的网站与下面的代码(任何网站想偷你的代码都将有用户发送到http://www.yourhtmlsource.com/sitemanagement/bandwidththeft.html

top.location = "http://www.yourhtmlsource.com/sitemanagement/bandwidththeft.html";

他们很快就会从那里页断开您的脚本

3

您可以防止他们使用JavaScript文件ð irectly,但没有保证的方式,以防止他们复制文件和手动使用它们,我已经可以看到几个答案你可以试试这个:

  • 由PHP文件中使用JavaScript文件:

    header("content-type: text/javascript"); 
    if(isset($_GET["name"]) && strpos("yourdomain.com", $_SERVER['HTTP_REFERER'])) 
        echo(file_get_contents("hidden_path_to_js/".$_GET["js_name"]."js")); 
    else 
        die("access denied"); 
    

在上面的例子中,你要检查,如果参考地址是你的网站或没有,所以对于使用JS文件

<script src="get_js_file.php?js_name=jquery"></script> 
+0

缓存是否适用于此? – webnat0

+0

@ Webnat0我认为你将能够缓存添加更多的头:头(“缓存控制:没有缓存,必须重新验证”); header(“Expires:Sat,26 Jul 2011 05:00:00 GMT”); – 2011-07-14 10:19:56

+0

只是为了Expires的事情,当它使用'date()'函数来写更准确的时间和日期我认为@Pezhvak IMV正在思考 –

相关问题