Web Sockets
目标:
在一个单独的持久连接上提供全双工、双向通信。与其他方案不同,
Web Sockets
不使用HTTP
协议,而使用一种自定义的协议。这种协议专门为快速传输小数据设计。虽然要求使用不同的Web服务器,但却具有速度上的优势
过程:
- 创建Web Socket
- HTTP请求发送到浏览器,发起连接
- 服务器响应
- 使用的HTTP升级为Web Socket协议
也就是说,使用标准的
HTTP
服务器无法实现Web Sockets
,只有支持这种协议的专门服务器才能正常工作
在使用
Web Socket URL
时,必须带着这个模式(未来可能支持其他模式)
- 未加密:
ws://
- 加密:
wss://
使用自定义协议而非HTTP协议:
好处
能够在客户端和服务器之间发送非常少量的数据,而不必担心HTTP那样的字节开销
适用于移动应用(带宽和网络延迟)
缺点:
制定协议的时间比制定
JavaScript API
的时间还要长
支持Web Sockets为浏览器:
Firefox 6+ 、 Safari 5+ 、 Chrome和iOS 4+版Safari
Web Sockets API
- 创建Web Socket,先实例一个WebSocket对象并传入要连接的URL:
var socket = new WebSocket("ws://www.example.com/server.php")
-Ps: 必须给WebSocket
构造函数传入绝对URL。同源策略对Web Sockets
不适用,因此可以通过它打开到任何站点的连接。至于是否与某个域中的页面通信,完全取决于服务器。(通过握手信息就可以知道请求来自何方)-
为确保通过XHR访问的URL安全,通行的做法就是验证发送请求者是否有权限访问相应的资源
- 要求以SSL连接来访问可以通过XHR请求的资源
- 要求每一次请求都要附带经过相应算法计算得到的验证码
注意: 以下措施对防范CSRF攻不起作用。
- 要求发送POST而不是GET请求 --- 很容易改变
- 检查来源URL以确定是否可信 --- 来源记录很容易伪造
- 基于cookie信息进行验证 --- 同样很容易伪造
ps: XHR对象也提供了一些安全机制,虽然表面上看起来保证安全,但实际上却相当不可靠。
如:
xhr.open("get","example.php",true, "usename","password")
// 不要这样做!!!
即便可以考虑这种安全机制,但是还是尽量不雅这样做。把用户名和密码保存在JavaScript代码总本身就很不安全的。任何人,只要他会使用JavaScript调试器,就可以通过查看相应的变量发现纯文本形式的用户名和密码
同源策略
: 是对XHR的一个主要约束,它为通信设置了“相同的域、相同的端口、相同的协议”这一限制。
试图访问上述限制之外的资源,都会引发安全错误,除非采用CORS(Cross-Origin Resource Sharing, 跨源资源共享)
。IE通过XDomainRequest对象支持CORS,其他浏览器也通过XHR对象原生支持CORS。图像Ping和JSONP是另外两种跨域通信的技术,但不如CORS
Web Sockets相关推荐
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...
- html5 静态网页 线程,HTML5 Web Workers之网站也能多线程的实现
Web Workers 是在HTML5中新增的,用来在web应用程序中实现后台处理的一种技术 在HTML4中,js创建的程序都是单线程的,如果花费时间比较长的话web界面就会长时间没有响应,最恶劣的情 ...
- 前端组件库 - 搭建web app常用的样式/组件等收集列表(移动优先)
0. 前端自动化(Workflow) 前端构建工具 Webpack - module bundler Yeoman - a set of tools for automating developmen ...
- 使用 Node.js、Express、AngularJS 和 MongoDB 构建一个Web程序
为什么80%的码农都做不了架构师?>>> 使用 Node.js.Express.AngularJS 和 MongoDB 构建一个实时问卷调查应用程序 2014 年 3 月 20 ...
- HTML5和CSS3不仅仅是两项新的Web技术标准
2019独角兽企业重金招聘Python工程师标准>>> HTML5和CSS3不仅仅是两项新的Web技术标准 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML ...
- 想成为一名优秀的Web前端工程师,这5点你要知道
很多刚学Web前端的人都会有这样的疑问:"怎样学Web前端才能成为一名优秀的Web前端工程师"?想成为一名优秀的Web前端工程师,这5点你必须知道.下面跟着小千一起来看看吧. 1. ...
- 移动web app开发必备 - 异步队列 Deferred
背景 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeo ...
- undertow服务器分析_进入Undertow Web服务器
undertow服务器分析 随着Java EE 7的到来以及处理诸如Web Sockets API和HTTP升级(例如EJB over HTTP)之类的高级功能的要求,WildFly开发团队已经做出了 ...
- web前端入门学习(纯干货)
web前端怎么样才能入门,首先我们要从什么是初级web前端工程师说起: 按照我的想法,我把前端工程师分为了入门.初级.中级.高级这四个级别, 入门级别指的是了解什么是前端(前端到底是什么其实很多人还是 ...
最新文章
- dcn和dcnv2 torch
- pfSense修改PPPoE拨号总数
- 近三月浏览器网页访问量统计
- 为什么脚本执行一行就不动了_Centos7 批量创建用户账号脚本
- 机器学习-算法背后的理论与优化(part6)--正则化的优缺点
- 列举python中常用的数据类型_列举Python常用数据类型并尽量多的写出其中的方法...
- MPEG-4 AVC/H.264 信息
- Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
- 3d激光雷达开发(平面分割)
- Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
- pku1177 Picture(矩形外围总周长)
- 牛逼!IDEA不愧为神器,结合Groovy脚本,简直天下无敌!
- 详解数据模型:概念模型、逻辑模型、物理模型
- 同学聚会幽默 , 小学生搞笑图片
- 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...
- 计算机多通道存储器工作原理,多通道大容量的采集存储器的设计与实现 - 全文...
- 用“心”迎接情人节,用另一种形式表达爱意
- idea maven 仓库 jar 包下载不来下解决方案
- 为什么选择进入金融业?
- MacOS QT qmake 与 CMake 设置ICON