图像ping
1、简介:
图像ping是与服务器进行简单、单向的跨域通信的一种方式,请求的数据是通过查询字符串的形式发送的,而相应可以是任意内容,但通常是像素图或204相应(No Content)。
2、使用方法:
var img = new Image(); img.onload = img.onerror = function(){ alert("done!"); }; img.src = "http://www.example.com/test?name=Nicalos";
3、应用:
图像ping常用于跟踪用户点击页面或动态广告曝光次数。
4、优缺点:
图像ping有两个主要缺点:首先就是只能发送get请求,其次就是无法访问服务器的响应文本。
JSONP
1、简介:
jsonp(json with padding),jsonp与json看起来差不多,只不过jsonp是被包含在函数调用中的json。jsonp由两部分组成,一部分是回调函数,一部分是数据。回调函数就是当响应到来时应该在页面中调用的函数,数据就是传入回调函数中的json数据。
2、使用方法:
function handleResponse(response){ alert("you are at IP address"+response.ip+",which is in"+response.city+","+response.region_name); } var script = document.createElement("script"); script.src = "http://freegeoip.net/json/?callback=handleResaponse"; document.body.insertBefore(script,document.body.firstChild);
3、 优点:第一,他能直接访问响应文本;第二,jsonp支持在浏览器与服务器之间的双向通信。
4、 缺点:无法保证加载的来自其他域的代码是安全的,还有就是无法判断jsonp的请求是否失败。
Comet
1、简介:comet是一种更高级的ajax技术,但是ajax是一种从页面向服务器请求数据的技术,而comet则是一种服务器向页面推送数据的技术。comet能够让信息近乎实时的被推送到页面上。适合处理体育比赛的分数和股票报价。
2、实现方式:
长轮询-即,浏览器定时向服务器发送请求,看有没有更新的数据。
http流-在整个页面的生命周期中只使用一个http连接,就是浏览器向服务器放松一个请求,而服务器保持连接打开,然后周期性的向浏览器发送数据。
Web Sockets
1、简介:
websockets的目标是在一个单独的持久连接上提供全双工、双向通信。在js中创建websockets之后,会有一个http请求发送到浏览器以发起连接,在取得服务器的响应后,建立的连接会由使用http交换为使用web sockets协议。 未加密的连接为:ws://,加密的连接为: wss://。
2、使用方法:
//websockets必须传入绝对url var socket = new WebSocket("ws://www.example.com/server.php"); var message = { time:new Date(); text:"helloword"; clientId:"ddddd" }; //websocket发送的数据与得到的返回数据一样都是纯文本数据 socket.send(JSON.stringify(message)); //服务器向客户端发来消息时,就会触发onmessage事件 socket.onmessage = function(event){ var data = event.data; } //同样的事件还有onopen、onerror、onclose,但是只有onclose事件的event对象有额外的信息 socket.onclose = function(event){ console.log("Was clean?"+event.wasClean+"Code="+event.code+"Reason="+event.reason); };
3、优缺点:
websockets能够在客户端和服务器端发送非常少量的数据,而不用担心http那样的字节级开销,由于传递的数据包很小,因此websocket很适合移动应用,而他的缺点在于制订协议的事件比较长。
JS中跨域技术集锦