Luar's Flash Playground:反盜連與Browsers不同的HTTP Referer麻煩事
新聞(101)
觀點或評論(94)
Flash書(63)
教程(73)
Design Patterns(3)
FlashCom筆記(47)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(23)
Ajax筆記(9)
習作(51)
組件(17)
酷站(32)
學習資源(28)
書籍推介(15)
本站與我(91)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
反盜連與Browsers不同的HTTP Referer麻煩事 (03-10-2009)
為了節約頻寬,很多Servers都會設置一些反盜連(Hotlink Protection)措施,通常通過檢查HTTP referer來決定連線是否來自自己的Domain,這些措施大多用來保護圖片免受其他網站盜連,不過稍為修改一下,都可以用來保護FLV免受盜連。常用方法有兩種:

編輯.htaccess
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(flv|mp3)$ - [NC,F,L]

編輯httpd.conf,首先啟動此:
LoadModule setenvif_module modules/mod_setenvif.so
將以下Code放在<VirtualHost>裡,可以放在</VirtualHost>之前:
SetEnvIfNoCase Referer "^http(s)?://(www\.)?yourdomain.com(/|$)" local_ref=1
SetEnvIfNoCase Referer "^$" local_ref=1
<FilesMatch "\.(flv|mp3)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

可惜,FLV需要通過Flash Player去播放,不同Browsers甚至不同版本處理Plugin中的HTTP Referer都是不同,所以以上反盜連方法來保護FLV根本是沒有可能 :(

Browser 傳回Plugin本身網址(即最理想情況:SWF的網址) 沒有傳回Referer 傳回本身嵌入SWF的網頁的網址
IE X    
Firefox   X  
Safari (MAC)     X
Safari (Win)   X  
<Chrome 3     X
Chrome 3+ X    
<=Opera 9     X
Opera 10+ X    

當你好像Youtube般,容許其他人在他們網頁中放一段HTML Code去播放你的Flash Video Player,反盜連保護就會出問題,從以上總結可見,第三直行的Browser就會出問題,例如Safari (MAC),影片根本不能播放,因為Apache 認為FLV正被其他網站盜連,拒絕FLV的傳送要求。

本文章由發表。
同組文章

Movable Type 4.32-en系統支持,Luar's Production版權所有。