本文共 1834 字,大约阅读时间需要 6 分钟。
同源策略:域名要相同(www.example.com和example.com不同),协议要相同(http和https不同),端口号要相同(默认是:80端口,它和:8080就不同)
var img=new Image();img.onload=img.onerror=function(){... ...}img.src="url?name=value";
var script=document.createElement(“script”);
script.src=”url?callback=handleResponse”; document.body.insertBefore(script,document.body.firstChild); JSONP由两部分组成:回调函数和数据 回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。 数据是传入回调函数中的JSON数据。 优点: 它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。 能够直接访问响应文本,可用于浏览器与服务器间的双向通信。 缺点: 只支持GET请求而不支持POST等其它类型的HTTP请求; 只支持跨域; 不能解决不同域的两个页面之间如何进行JavaScript调用的问题; JSONP从其他域中加载代码执行,其他域可能不安全; 难以确定JSONP请求是否失败。Comet可实现服务器向浏览器推送数据。
Comet是实现方式:长轮询和流 短轮询即浏览器定时向服务器发送请求,看有没有数据更新。 长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。 流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。WebSocket可在一个单独的持久连接上提供全双工、双向通信。
WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。 var webSocket=new WebSocket(“ws://”); webSocket.send(message); webSocket.onmessage=function(event){ var data=event.data; … …. } 注意: 必须给WebSocket构造函数传入绝对URL; WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器; WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。 优点: 在客户端和服务器之间发送非常少的数据,减少字节开销。主要解决的是浏览器的同源策略,通过iframe设置
注意:不可以利用flash的http请求,来处理跨域问题,域名不同不能使用ajax
转载地址:http://pfaen.baihongyu.com/