目标:php
在一个单独的持久链接上提供全双工、双向通讯。与其余方案不一样,
Web Sockets
不使用HTTP
协议,而使用一种自定义的协议。这种协议专门为快速传输小数据设计。虽然要求使用不一样的Web服务器,但却具备速度上的优点算法
过程:跨域
也就是说,使用标准的
HTTP
服务器没法实现Web Sockets
,只有支持这种协议的专门服务器才能正常工做浏览器
在使用
Web Socket URL
时,必须带着这个模式(将来可能支持其余模式)安全
ws://
wss://
使用自定义协议而非HTTP协议:服务器
好处cookie
可以在客户端和服务器之间发送很是少许的数据,而没必要担忧HTTP那样的字节开销网络
适用于移动应用(带宽和网络延迟)socket
缺点:函数
制定协议的时间比制定
JavaScript API
的时间还要长
支持Web Sockets为浏览器:
Firefox 6+ 、 Safari 5+ 、 Chrome和iOS 4+版Safari
var socket = new WebSocket("ws://www.example.com/server.php")
-Ps: 必须给WebSocket
构造函数传入绝对URL。同源策略对Web Sockets
不适用,所以能够经过它打开到任何站点的链接。至因而否与某个域中的页面通讯,彻底取决于服务器。(经过握手信息就能够知道请求来自何方)-
如:
xhr.open("get","example.php",true, "usename","password")
// 不要这样作!!!
即使能够考虑这种安全机制,可是仍是尽可能不雅这样作。把用户名和密码保存在JavaScript代码总自己就很不安全的。任何人,只要他会使用JavaScript调试器,就能够经过查看相应的变量发现纯文本形式的用户名和密码
: 是对XHR的一个主要约束,它为通讯设置了“相同的域、相同的端口、相同的协议”这一限制。
试图访问上述限制以外的资源,都会引起安全错误,除非采用CORS(Cross-Origin Resource Sharing, 跨源资源共享)
。IE经过XDomainRequest对象支持CORS,其余浏览器也经过XHR对象原生支持CORS。图像Ping和JSONP是另外两种跨域通讯的技术,但不如CORS