2012-12-14 74 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/) –

相關問題