把頁面中的img標籤的src設置爲「」存在巨大的風險,不管是在html中寫入php
<img src=」" />html
仍是在js中寫入ajax
var img = new Image(); img.src = 「」;編程
出現一次這樣的標籤會致使向你的服務器多作一次請求。img標籤的src=""時,會引發瀏覽器再次訪問"./"即當前目錄,若是該目錄下有default.aspx,index.aspx等IIS的默認文檔,則默認文檔會執行2次瀏覽器
在一個訪問量不高的網站中,多一個這樣的請求也無所謂(甚至可讓你的網站瀏覽看上去翻番),但在一個千萬級訪問量甚至更高的WEB站點裏,這樣會致使你的服務器和帶寬的成本顯著增長。 另一個隱患是,從新請求某個頁面可能會致使用戶的一些信息被無心中修改,例如cookies,或者ajax操做。服務器
你永遠不會寫出這樣的代碼? cookie
我並不這麼認爲,不少時候這種狀況在無心中出現,好比下面這段php代碼:網站
<img src="$imageUrl" > google
你原計劃是從服務器端讀取這個src地址,可是因爲某個緣由,這個地址還未設置,或者代碼的BUG致使讀取失敗,就會出現空的src標籤。url
其餘的標籤中的空src會不會致使這樣的問題?
好消息是,在IE中只有image標籤有這個問題。壞消息是,在Chrome, Safari, 和 Firefox中<script src=""> 和<link href="">都會致使出現一個新的請求。
如何解決這個問題?
能夠從兩方面着手,一是儘可能避免這種壞的編程方式,不要出現空的src標籤。另外,能夠從服務器端着手,在發現時這種無心義的請求時不要返回任何東西給客戶端。
<?php //Works for IE only when using path URLs and not file URLs //get the referrer $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; //current URL (assuming HTTP and default port) $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //make sure they're not the same if ($referrer == $url){ exit; } ?>
原文網址: