3 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
需要注意的是,此類請求只能是GET,所以只適合統(tǒng)計等用途,不能用于觸發(fā)發(fā)表評論、刪除文件等操作。

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
主要應(yīng)用于只需要向服務(wù)器發(fā)送數(shù)據(jù)(日志數(shù)據(jù))的場合,且無需服務(wù)器有消息體回應(yīng)。比如收集訪問者的統(tǒng)計信息。
一般做法是服務(wù)器用一個1x1的gif圖片來作為響應(yīng),當(dāng)然這有點浪費服務(wù)器資源。因此用header來響應(yīng)比較合適,目前比較合適的做法是服務(wù)器發(fā)送"204 No Content",即“服務(wù)器成功處理了請求,但不需要返回任何實體內(nèi)容”。
另外該腳本的位置一般放在頁面最后以免阻塞頁面渲染,并且一般情況下也不需要append到DOM中。通過它的onerror和onload事件來檢測發(fā)送狀態(tài)。
<script type="text/javascript"> var thisPage = location.href; var referringPage = (document.referrer) ? document.referrer : "none"; var beacon = new Image(); beacon.src = "http://www.example.com/logger/beacon.gif?page=" + encodeURI(thisPage) + "&ref=" + encodeURI(referringPage);</script>
這樣做和ajax請求的區(qū)別在于:
1.只能是get請求,因此可發(fā)送的數(shù)據(jù)量有限。
2.只關(guān)心數(shù)據(jù)是否發(fā)送到服務(wù)器,服務(wù)器不需要做出消息體響應(yīng)。并且一般客戶端也不需要做出響應(yīng)。
3.實現(xiàn)了跨域。
添加回答
舉報