前后台交互的主要技术是ajax,他的核心对象是XMLHttpRequest(XHR)对象,但受同源策略的限制(相同的域、相同的端口、相同的协议),试图访问上述限制之外的资源,都会引发安全错误。
(1)采用被认可的跨于解决方案CORS(Cross-Origin Resource Sharing,跨域资源共享),IE8通过XDomainRequest(XDR)对象支持CORS,其他浏览器通过XHR对象原生支持CORS。
(2)图像Ping:动态创建图像经常用于图像Ping,它是与服务器进行简单。单向跨域通信的一种方式。请求的数据通过查询字符串的形式发送,由于浏览器得不到任何具体的数据,所以可以侦听load和error事件,知道响应是什么时候侦听到的。图像Ping最常用于跟踪用户点击页面或动动态广告曝光次数。有两个主要缺点:一是只能发送GET请求,二是无法响应服务器的文本。
(3)JSONP是通过动态创建<script>元素使用的,可以为src属性指定一个跨域URL。能够直接访问文本,支持双向通信。两个不足:一是如果其他域不安全,很可能会在响应中夹带一些恶意代码;二是不容易确定JSONP请求是否失败,html5中给<script>元素新增了一个onerror事件处理程序,但目前没有浏览器支持。为此,开发人员要使用计时器检测指定时间内是否接收到了响应。
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);
【注】:图像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://。