1.图像ping
由于img标签可以跨域,因此在onload和onerror事件中可以请求跨域,只能get请求,无法访问服务器的响应文本,只能用于单向通信。
var img=new Image();
img.onload=img.onerror=function(){
alert("done!");
};
img.src="http://www.example.com/test?name=nicholas";
2.jsonp
两部分:url和回调;在地址中指定callback。如:http//freegeoip.net/json/?callback=handleResponse
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.comet
客户端请求,服务端有数据时才返回,返回后关闭连接,即长轮询
4.服务器发送事件SSE(server-sent events)
var source=new EventSource("myevents.php");
source.onmessage=function(event){
var data=event.data;
}
source.close();
5.web sockets双向通讯,如聊天室
var socket=new WebSocket("ws://www.example.com/server.php");
socket.close();
参考资料:《javascript高级程序设计》第3版,其他跨域技术章节