1.圖像pingjavascript
因爲img標籤能夠跨域,所以在onload和onerror事件中能夠請求跨域,只能get請求,沒法訪問服務器的響應文本,只能用於單向通訊。php
var img=new Image(); img.onload=img.onerror=function(){ alert("done!"); }; img.src="http://www.example.com/test?name=nicholas";
2.jsonpjava
兩部分:url和回調;在地址中指定callback。如:http//freegeoip.net/json/?callback=handleResponseweb
function handleResponse(response){ alert("your IP address "+response.ip); } var script=document.createElement("script"); script.src="http://freeoip.net/json/?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild);
3.cometjson
客戶端請求,服務端有數據時才返回,返回後關閉鏈接,即長輪詢跨域
4.服務器發送事件SSE(server-sent events)服務器
var source=new EventSource("myevents.php");socket
source.onmessage=function(event){jsonp
var data=event.data;url
}
source.close();
5.web sockets雙向通信,如聊天室
var socket=new WebSocket("ws://www.example.com/server.php");
socket.close();
參考資料:《javascript高級程序設計》第3版,其餘跨域技術章節