動態建立影象經常用於影象 ping。影象 ping 是與伺服器進行簡單、單向的跨域通訊的一種方式。請求的資料是通過查詢字串形式傳送的,而響應可以是任意內容,但通常是畫素圖或 204 響應。通過影象 ping,瀏覽器得不到任何具體的資料,但通過偵聽 load 和 error 事件,它能知道響應是什麼時候接收到的。
示例
var img = new image();
img.onload = img.onerror = function();
img.src = "";
這裡建立了乙個 image 的例項,然後將 onload 和 onerror 事件處理程式指定為同乙個函式。這樣無論是什麼響應,只要請求完成,就能得到通知。請求從設定 src 屬性那一刻開始,而這個例子在請求中傳送了乙個 name 引數。
影象 ping 最常用於跟蹤使用者點選頁面或動態廣告**次數。影象 ping 有兩個主要的缺點,一是只能傳送 get 請求,二是無法訪問伺服器的響應文字。因此,影象 ping 只能用於瀏覽器與伺服器間的單向通訊。
示例
callback();
示例
示例
function handleresponse(response)
var script = document.createelement("script");
script.src = "";
document.body.insertbefore(script, document.body.firstchild);
cors - 自定義 http 頭部。
自帶跨域屬性的標籤,影象 ping:只能傳送get請求,無法訪問伺服器的文字。
自帶跨域屬性的標籤,jsonp:如果其他域不安全,會在響應中載入不安全**,因為使用不是自己運維的web服務時,一定要保證它安全可靠。
comet:長輪詢和流。
sse:長輪詢,短輪詢和http流,半雙工。
websocket:全雙工,只有支援這種協議的專門伺服器才能工作。
面對某個具體的用例,在考慮是使用 sse 還是使用 web sockets 時,可以考慮如下幾個因素。首先,你是否有自由度建立和維護 web sockets 伺服器?因為 web socket 協議不同於http,所以現有伺服器不能用於 web socket 通訊。 sse 倒是通過常規 http 通訊,因此現有伺服器就可以滿足需求。第二個要考慮的問題是到底需不需要雙向通訊。如果用例只需讀取伺服器資料(如比賽成績) ,那麼 sse 比較容易實現。如果用例必須雙向通訊(如聊天室),那麼 web sockets 顯然更好。別忘了,在不能選擇 web sockets 的情況下,組合 xhr 和 sse 也是能實現雙向通訊的。
關於跨域問題
解決方案 使用jsonp jsonp是使用scripe標籤來突破同源策略的一種實現方式,只能傳送get請求,就算是用jqueryajax指明了post請求,jquery也會在傳送請求的過程中轉化為get請求。具體實現方案未研究。使用子頁面 使用巢狀iframe子頁面的方法,避開同源策略。跨域資源共享...
關於字型跨域
寫在前面的話 跨域問題啊 字型跨域,居然碰到了 網上蒐羅來的答案,有機會的可以試試有沒有效 原文 css載入字型的跨域問題 載 剛才碰到乙個css載入字型跨域問題,記錄一下啊。站點的動態請求與靜態檔案請求是不同的網域名稱的。站點的網域名稱為 www.domain.com,而靜態檔案的網域名稱為 st...
關於springmvc跨域
關於跨域問題,主要用的比較多的是cros跨域。詳細介紹請看 但是,在springmvc angularjs下支援跨域請求時,出現複雜跨域場景 post json 失敗的情況。開始的跨域配置如下 public class crossinterceptor extends handlerintercep...