目标:

在一个单独的持久连接上提供全双工、双向通信。与其他方案不同,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

  1. 创建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相关推荐

  1. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...

  2. html5 静态网页 线程,HTML5 Web Workers之网站也能多线程的实现

    Web Workers 是在HTML5中新增的,用来在web应用程序中实现后台处理的一种技术 在HTML4中,js创建的程序都是单线程的,如果花费时间比较长的话web界面就会长时间没有响应,最恶劣的情 ...

  3. 前端组件库 - 搭建web app常用的样式/组件等收集列表(移动优先)

    0. 前端自动化(Workflow) 前端构建工具 Webpack - module bundler Yeoman - a set of tools for automating developmen ...

  4. 使用 Node.js、Express、AngularJS 和 MongoDB 构建一个Web程序

    为什么80%的码农都做不了架构师?>>>    使用 Node.js.Express.AngularJS 和 MongoDB 构建一个实时问卷调查应用程序 2014 年 3 月 20 ...

  5. HTML5和CSS3不仅仅是两项新的Web技术标准

    2019独角兽企业重金招聘Python工程师标准>>> HTML5和CSS3不仅仅是两项新的Web技术标准 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML ...

  6. 想成为一名优秀的Web前端工程师,这5点你要知道

    很多刚学Web前端的人都会有这样的疑问:"怎样学Web前端才能成为一名优秀的Web前端工程师"?想成为一名优秀的Web前端工程师,这5点你必须知道.下面跟着小千一起来看看吧. 1. ...

  7. 移动web app开发必备 - 异步队列 Deferred

    背景 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeo ...

  8. undertow服务器分析_进入Undertow Web服务器

    undertow服务器分析 随着Java EE 7的到来以及处理诸如Web Sockets API和HTTP升级(例如EJB over HTTP)之类的高级功能的要求,WildFly开发团队已经做出了 ...

  9. web前端入门学习(纯干货)

    web前端怎么样才能入门,首先我们要从什么是初级web前端工程师说起: 按照我的想法,我把前端工程师分为了入门.初级.中级.高级这四个级别, 入门级别指的是了解什么是前端(前端到底是什么其实很多人还是 ...

最新文章

  1. dcn和dcnv2 torch
  2. pfSense修改PPPoE拨号总数
  3. 近三月浏览器网页访问量统计
  4. 为什么脚本执行一行就不动了_Centos7 批量创建用户账号脚本
  5. 机器学习-算法背后的理论与优化(part6)--正则化的优缺点
  6. 列举python中常用的数据类型_列举Python常用数据类型并尽量多的写出其中的方法...
  7. MPEG-4 AVC/H.264 信息
  8. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统
  9. 3d激光雷达开发(平面分割)
  10. Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
  11. pku1177 Picture(矩形外围总周长)
  12. 牛逼!IDEA不愧为神器,结合Groovy脚本,简直天下无敌!
  13. 详解数据模型:概念模型、逻辑模型、物理模型
  14. 同学聚会幽默 , 小学生搞笑图片
  15. 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...
  16. 计算机多通道存储器工作原理,多通道大容量的采集存储器的设计与实现 - 全文...
  17. 用“心”迎接情人节,用另一种形式表达爱意
  18. idea maven 仓库 jar 包下载不来下解决方案
  19. 为什么选择进入金融业?
  20. MacOS QT qmake 与 CMake 设置ICON

热门文章

  1. Thinkphp5实战之留言板
  2. Blender图解教程:高仿版超级马里奥(一)帽子建模(附模型下载)
  3. Golang 学习二十五(UDP 编程)
  4. AutoCAD Civil 3D-总结-公路工程建模步骤
  5. 【手写JVM专栏】一、带你用Java实现JVM-开篇
  6. 基于Echarts的销售企业经营数据分析-帕累托
  7. 还在为多维度数据分析烦恼?我来教你一招摆平!
  8. 互联网公司招聘--去哪儿--产品运营--2016年笔试题
  9. 花书/深度学习入门相关资料
  10. java使用CRC32计算校验和