一面二面(3)之DOM事件和HTTP协议

    技术2025-03-30  29

    一.DOM事件 1.DOM事件模型:冒泡和捕获;

    2.DOM事件流: 描述DOM事件捕获的具体流程从window,document,html,body,目标元素; 描述DOM事件冒泡的具体流程与捕获顺序相反;

    3.EVENT对象的常见应用: e.preventDefault(),阻止默认事件, e.stopPropagation() 阻止冒泡, e.currentTarget当前绑定的事件, e.target当前被点击的元素,应用事件委托减少事件绑定 ;

    4.自定义事件

    var eve = new Event('test'); var ev = document.getElementById('ev'); console.log('ev', ev) ev.addEventListener('test', function () { console.log('test事件') }); setTimeout(function () { ev.dispatchEvent(eve), 1000 })

    效果图: 二.HTTP协议 1.HTPP协议的主要特点:无连接,无状态,简单快速,灵活;

    2.HTTP报文的组成部分请求: 请求报文:请求行,请求头,空行,请求体, 响应报文:状态行,响应头,空行,响应体,

    3.HTTP方法: GET,POST,PUT,DELETE,HEAD,CONNECT,OPTIONS,TRACE

    4.HPOST和GET的区别: 回退:POST请求回再次发起,GET请求则不会, 游览器缓存:GET会缓存,POST不会, 参数的位置:GET在url,POST在请求体, 参数长度限制:GET有限制,POST没用限制, 安全性:GET参数暴露在URL,不能用来传敏感信息,

    5.HTTP状态码: 1X:指示信息,表示已经接收,继续处理, 2X:请求已成功被服务器接收、理解、并接受 3X:重定向(301永久重定向,302临时重定向), 4X:客户端错误(400参数错误,404页面找不到), 5X:服务器问题,

    6.什么是持久连接: Connection: Keep-Alive 设置keep-alive为持久化连接, 非keep-alive为非持久化连接,

    7.什么是管线化: 请求-》请求-》请求-》响应-》响应-》响应 1.持久连接完成,HTTP/1.1支持此技术, 2.只有GET和HEAD请求支持管线化,而POST有所限制, 3.初次创建连接时不应该启动管线化,以为对方服务器不一定支持HTTP/1.1版本的协议

    以下是 HTTP 请求/响应的步骤:

    \1. 客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.luffycity.com。

    \2. 发送HTTP请求 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    \3. 服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    \4. 释放连接TCP连接 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    \5. 客户端浏览器解析HTML内容 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

    浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;  1…DNS解析,找到对应服务器的ip(Ngix负载均衡) 2…与目的主机进行TCP连接(三次握手); 3…发送与收取数据(浏览器与目的主机开始HTTP访问过程); 4.与目的主机断开TCP连接(四次挥手);

    Processed: 0.010, SQL: 9