前端工程师——HTTP/HTML/浏览器1

http 与 https:

 基本概念:

  • HTTP:是客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS:是以安全为目标的HTTP通道,即HTTP下加入SSL层,HTTPS的安全基础是SSL,其主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

主要区别:

  • HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密。因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
  • HTTPS(安全套接字层超文本传输协议)为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
  1. https协议需要到ca申请证书
  2. http信息是明文传输,https则是具有安全性的ssl加密传输协议。
  3. http端口是80,https端口是443。
  4. http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议

HTTPS的工作原理:

     https://blog.csdn.net/sean_cd/article/details/6966130  (这位兄台说的很详细)

HTTPS的优点:

  1. 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. HTTPS协议要比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
  3. HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

HTTPS的缺点:

  1. HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
  2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
  3. SSL证书比较昂贵;
  4. SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗;
  5. HTTPS协议的加密范围也比较有限。SSL证书的信用链体系并不安全,当可以控制CA证书的情况下,中间人攻击可行。

TCP的三次握手:

  1. TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。
  2. 一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:连接、数据传输、退出。通过三次握手建立一个链接,通过四次挥手来关闭一个连接。
  3. 当一个连接被建立或被终止时,交换的报文段只包含TCP头部,而没有数据。
  4. 三次握手过程:https://blog.csdn.net/ThinkWon/article/details/104903925
  5. 四次挥手过程:https://blog.csdn.net/ThinkWon/article/details/104903925

TCP与UDP区别:

  1. TCP面向连接(如打电话要先拨号建立连接); UDP是无连接的,即发送数据之前不需要建立连接

  2. TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流; UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低

  4. 每一条TCP连接只能是点到点的; UDP支持一对一,一对多,多对一和多对多的交互通信

  5. TCP首部开销20字节; UDP的首部开销小,只有8个字节

  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

WebSocket:

(1)什么是WebSocket?
WebSocket是HTML5中的协议,支持持久连续, http协议不支持持久性连接。Http1.0和HTTP1.1都不支持持久性的链接, HTTP1.1中的keep-alive, 将多个http请求合并为1个
(2)WebSocket是什么样的协议,具体有什么优点?

  1. HTTP的生命周期通过Request来界定,也就是Request一个Response。在Http1.1中进行了改进,有一个connection: Keep-alive, 也就是说,在一个Http连接中,可以发送多个Request,接收多个Response。但是必须记住,在Http中一个Request只能对应有一个Response, 且这个Response是被动的,不能主动发起。
  2. WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的。

HTTP请求的方式,HEAD方式:

  • head:类似于get请求,只不过返回的响应中没有具体的内容,用户获取报头
  • options:允许客户端查看服务器的性能,比如说服务器支持的请求方式等等。

BOM:

  • 什么是Bom?       Bom是浏览器对象。
  • location对象:
  1. location.href -- 返回或设置当前文档的URL
  2. location.search -- 返回URL中的查询字符串部分。
  3. location.hash -- 返回URL # 后面的内容,如果没有#,返回空
  4. location.host -- 返回URL中的域名部分
  5. location.hostname -- 返回URL中的主域名部分
  6. location.pathname -- 返回URL的域名后的部分
  7. location.port -- 返回URL中的端口部分
  8. location.protocol -- 返回URL中的协议部分
  9. location.assign -- 设置当前文档的URL
  10. location.replace() -- 设置当前文档的URL ,并且在history对象的地址列表中移除这个URL location.replace(ur); 
  11. location.reload() -- 重载当前页面
  • history对象
  1. history.go() -- 前进或后退指定的页面数 history.go(num);
  2. history.back()-- 后退一页
  3. history.forward() -- 前进一页
  • Navigator对象
  1. navigator.userAgent -- 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串)
  2. navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie

HTML5  drag api

  1. dragstart: 事件主体是被拖放元素,在开始拖放被拖放元素时触发。
  2. drag: 事件主体是被拖放元素,在正在拖放被拖放元素时触发。
  3. dragenter: 事件主体是目标元素,在被拖放元素进入元素时触发。
  4. dragover: 事件主体是目标元素,在被拖放元素在某元素内移动时触发。
  5. dragleave: 事件主体是目标元素,在被拖放元素移出目标元素时触发。
  6. drop: 事件主体是目标元素,在目标元素完全接受被拖放元素时触发。 
  7. dragend:事件主体是被拖放元素,在整个拖放操作结束时触发

HTTP2.0:

  • 简要概括: http2.0是基于http1.0之后的首次更新。提升了访问速度(请求资源所需时间更少,访问速度更快,相比http1.0)
  • 允许多路复用: 多路复用允许同时通过单一的 HTTP2 连接发送多重请求-响应信息。
  • 改善了: 在http1.1中, 浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞。
  • 二进制分帧: HTTP2.0会将所有的传输信息分割为更小的信息或者帧,并对他们进行二进制编码

400、401、403状态码:

  • 400状态码:  请求无效 ;产生原因: 前端提交数据的字段名称和字段类型与后台的实体没有保持一致,前端提交到后台的数据应该是json字符串类型,但是前端没有将对象JSON.stringify转化成字符串。解决方法: 对照字段的名称,保持一致性,将obj对象通过JSON.stringify实现序列化
  • 401状态码: 当前请求需要用户验证
  • 403状态码: 服务器已经得到请求,但是拒绝执行

Cookie、sessionStorage、 localStorage的区别:

  • 共同点: 都是保存在浏览器端,并且是同源的
  • Cookie: cookie数据始终在同源的http请求中携带,即cookie在浏览器和服务器间来回传递。 而sessionStorage和localStorage不会自动把数据发给服务器, 仅在本地保存。Cookie数据还有路径(path) 的概念,可以限制cookie只属于某个路径下,存储的大小很小只有4K左右。
  • SessionStorage:  仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,localStorage: 始终有效,窗口或浏览器关闭也一直保存, 因此用作持久数据; cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
  • localStorage:  localStorage 在所有同源窗口中都是共享的; cookie也是在所有同源窗口中都是共享的。(key: 同源窗口都会共享,并且不会失效,不管窗口或者浏览器关闭与否都会始终生效) .

cookie的作用:

  1. 保存用户登录状态。例如将用户id存储于一个cookie内, 这样当用户下次访问该页面时就不需要重新登录了。
  2. 跟踪用户行为。
  3. HTTP是一个无状态协议,因此Cookie的最大作用就是存储sessionId用来唯一标志用户

web worker:

  • 在HTML页面中,如果在执行脚本时,页面的状态是不可响应的,直到脚本执行完成后,页面才变成可响应的。web worker是运行在后台的js,独立于其他脚本,不会影响页面的性能。并且通过postMessage将结果回传到主线程。这样在进行复杂操作的时候,就不会阻塞主线程了。

Doctype:

  • Doctype声明于文档最前面,告诉浏览器以何种方式来渲染页面, 这里有两种模式:严格模式和混杂模式。
  • 严格模式的排版和JS运作模式是以该浏览器支持的最高标准运行。
  • 混杂模式,向后兼容, 模拟老式浏览器,防止浏览器无法兼容页面。

Cookie如何防范XSS攻击:

XSS (跨站脚本攻击) 是指攻击者在返回的HTML中嵌入javascipt脚本, 为了减轻这些攻击, 需要在HTTP头部配上, set-cookie:
httponly-这个属性可以防止XSS, 它会禁止javascript脚本来访问cookie。
secure -这个属性告诉浏览器仅在请求为https的时候发送cookie。

click在 ios 上有300ms延迟如何解决?

  1. 粗暴型:禁用缩放  user-scalable=no
  2. 利用FastClick,其原理是: 检测到touchend事件后,立刻触发模拟click事件, 且把浏览器300毫秒之后真正出发的事件给阻断掉

addEventListener参数

  • addEventListener(event, function, useCapture)
  • 其中,event指定事件名; function指定要事件触发时执行的函数; useCapture指定事件 是否在捕获或冒泡阶段执行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值