先後臺交互的主要技術是ajax,他的核心對象是XMLHttpRequest(XHR)對象,但受同源策略的限制(相同的域、相同的端口、相同的協議),試圖訪問上述限制以外的資源,都會引起安全錯誤。html
(1)採用被承認的跨於解決方案CORS(Cross-Origin Resource Sharing,跨域資源共享),IE8經過XDomainRequest(XDR)對象支持CORS,其餘瀏覽器經過XHR對象原生支持CORS。html5
(2)圖像Ping:動態建立圖像常常用於圖像Ping,它是與服務器進行簡單。單向跨域通訊的一種方式。請求的數據經過查詢字符串的形式發送,因爲瀏覽器得不到任何具體的數據,因此能夠偵聽load和error事件,知道響應是何時偵聽到的。圖像Ping最經常使用於跟蹤用戶點擊頁面或動動態廣告曝光次數。有兩個主要缺點:一是隻能發送GET請求,二是沒法響應服務器的文本。ajax
(3)JSONP是經過動態建立<script>元素使用的,能夠爲src屬性指定一個跨域URL。可以直接訪問文本,支持雙向通訊。兩個不足:一是若是其餘域不安全,極可能會在響應中夾帶一些惡意代碼;二是不容易肯定JSONP請求是否失敗,html5中給<script>元素新增了一個onerror事件處理程序,但目前沒有瀏覽器支持。爲此,開發人員要使用計時器檢測指定時間內是否接收到了響應。json
Function handleResponse(response){跨域
alert(「you’re at IP address」+response.ip+」which is in」+response.city+」,」+response.name);瀏覽器
}安全
var script=document.createElement(「script」);服務器
Script.src=」http://freegeoip.net/json/?callback=handleResponse」 ;加密
document.body.insertBefore(script,document.body.firstChild);.net
【注】:圖像Ping和JSONP不如CORS穩妥;
(3)Comet是對ajax的進一步擴展,讓服務器幾乎可以實時的向客戶端推送數據,實現Comet的手段主要有兩個:長輪詢和HTTP流。全部瀏覽器都支持長輪詢,而只有部分瀏覽器原生支持HTTP流。SSE(Sever-Sent Events,服務器發送事件)是一種實現Comet交互的瀏覽器API,即支持長輪詢,有支持HTTP流。
(4)Web Sockets是一種與服務器進行全雙工、雙向通訊的信道。與其餘方案不一樣,Web Sockets不使用HTTP協議,使用一種自定義協議。這種協議專門爲快速傳輸小數據設計,所以很是適合移動應用。因爲使用了自定義協議,因此URL模式也略有不一樣,未加密鏈接由http://變成ws://;加密鏈接由https://變成wss://。