先后台交互的主要技术是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://。