JS中跨域技术集锦

 图像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中跨域技术集锦,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。