2012-12-14 39 views
0

我有这种情况: IP X用户访问我的网站与IP Y.该网站有一个外部<脚本>标签,它从AdServer Z获取信息(<脚本src = Z/script.js />)并显示广告。拒绝访问我的广告服务器给第三方

现在,我想阻止X直接访问Z/script.js,但是当用户访问网站时,它会显示广告。

我尝试使用.htaccess这样做:

Order allow,deny 
Allow from Y 
Deny from all 

但它好好尝试显示广告,我不能直接访问该文件。

但是,当我这样做:

Order allow,deny 
Allow from X 
Deny from all 

网站显示广告,我可以直接访问该文件。

我以为在Z上的Apache将收到Y作为IP,但显然是接收X. 这是为什么? 我能做些什么来保护用户的Z,但我的网站可以链接这些文件。

回答

0

您直接链接到广告服务器,而不是代理。这意味着当有人从您的网络服务器加载页面,并且浏览器呈现<script src=ADSERVER/script.js>时,浏览器直接向ADSERVER发送请求。除非您更改网址,否则您无法对浏览器执行任何操作而不是

您可以更改URL以指向服务器上的URL,并对其进行代理。例如,假设您将网址从http://ADSERVER/script.js更改为/adserver/script.js

你可以(在虚拟主机或仅服务器配置)用的ProxyPass做到这一点:

ProxyPass /adserver/script.js http://ADSERVER/script.js 

或者mod_rewrite的(在htaccess的,服务器或虚拟主机配置,但mod_proxy的必须加载):

RewriteEngine On 
    RewriteRule ^/?adserver/script.js http://ADSERVER/script.js [L,P] 

然后在广告服务器上,只允许Y(您的网络服务器)访问。

+0

这是一个很好的解决方案。有效。 问题是,该脚本执行document.write加载ADSERVER的更多脚本,并且脚本再次返回错误403. – xotihcan

+0

@xotihcan如果您的adserver脚本的输出包含更多广告服务器脚本的URL,那么您可能需要考虑使用类似[mod_proxy_html](http://apache.webthing.com/mod_proxy_html/) –

相关问题