web前端必须掌握的HTTP协议知识

web前端必会的HTTP协议知识

HTTP协议

HTTP<超文本传输协议>的缩写。是用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型。

HTTP协议的特点
  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP报文
  • 请求报文:一个HTTP请求报文由四个部分组成:请求行、请求头、空行、请求体。

    1. 请求行:请求行由请求方法字段URL字段HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /data/info.html HTTP/1.1
    2. 请求头:key: value值,告诉服务器客户端需要哪些内容,什么类型。
    3. 空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
    4. 请求体:若方法字段是GET,则此项为空,没有数据。若方法字段是POST,则通常来说此处放置的就是要提交的数据
  • 响应报文:HTTP响应报文也由四部分组成:状态行、响应头、空行、响应体。

    1. 响应行:响应行一般由协议版本状态码及其描述组成 比如 HTTP/1.1 200 OK
    2. 响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
    3. 空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
    4. 响应体:响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
GET和POST的区别
  • GET在浏览器回退时是无害的,而POST会再次提交请求

  • GET产生的UR地址可以被收藏,而POST不可以

  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置

  • GET请求只能进行ur|编码,而POST支持多种编码方式

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

  • GET请求在URL中传送的参数是有长度限制的,而POST没有限制

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制

  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

  • **GET参数通过URL传递,POST放在Request body中 **

状态码
  • 1**:指示信息—表示请求已接受,继续处理
  • 2**:成功—表示请求已被成功接受
    • 200 OK:客户端请求成功
    • 206 Partial Content:客户端发送了一个带有Range头的GET请求,服务器完成了它
  • 3**:重定向—要完成请求必须进行更进一步的操作
    • 301 Moved Permanently:所有请求的页面已转移至新的URL
    • 302 Found:所请求的页面已经临时转至新的URL
    • 304 Not Modified:客户端有缓冲的文档并发出了一个条件性的请求,服务器告诉客户,原来缓冲的文档还可以继续使用
  • 4**:客户端错误—请求有语法错误,或请求无法实现
    • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthorized:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
    • 403 Forbidden:对被请求的页面访问被禁止
    • 404 Not Found:请求资源不存在
  • 5**:服务器错误—服务器未能实现合法的请求
    • 500 Internal Sever Error:服务器发生不可预期的错误原来缓冲的文档还可以继续使用
    • 503 Server Unavailable:请求未完成,服务器临时过载或当机,一段时间后可恢复正常
持久连接
  • HTTP协议采用“请求-应答"模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要新建一个连接, 完成之后立即断开连接(HTTP协议为无连接的协议)
  • 当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive 功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接。(HTTP1.1版本支持持久连接)
管线化

在使用持久连接的情况下,某个连接上消息的传递类似于:

请求1 ->响应1 ->请求2->响应2 ->请求3 ->响应3

管线化中某个连接上的消息变成了类似这样:

请求1 ->请求2->请求3->响应1 ->响应2 ->响应3

管线化特点

  • 管线化机制通过持久连接完成,仅HTTP/1.1支持此技术
  • 只有GET和HEAD请求可以进行管线化,而POST则有所限制
  • 初次创建连接时不应启动管线机制,因为对方(服务器)不- -定支持HTTP/1.1版本的协议
  • 管线化不会影响响应到来的顺序,如上面的例子所示,响应返回的顺序并未改变
  • HTTP/1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败即可
  • 由于上面提到的服务器端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不好,因此现代浏览器如Chrome和Firefox默认并未开启管线化支持
  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Web前端开发需要掌握的网络基础知识包括: - HTML: 超文本标记语言,用于描述网页的结构 - CSS: 层叠样式表,用于控制网页的外观 - JavaScript: 用于控制网页的行为 - HTTP: 超文本传输协议,用于在浏览器和服务器之间传输数据 - HTTPS: 安全的HTTP协议,用于在浏览器和服务器之间传输加密数据 - AJAX: 异步javascript和XML,用于在网页上实现异步数据交互 - API: 应用程序编程接口,用于网页和服务器之间传输数据 - IP地址,DNS,TCP/UDP,端口号,这些都是基础网络知识 ### 回答2: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的基本概念、请求方法、状态码、报文格式等。掌握HTTP请求和响应过程,以及常见的HTTP头部字段。 2. 网络通信基础:了解TCP/IP协议族的基本原理和工作机制,包括IP地址、域名解析、端口等。理解TCP和UDP协议的区别和特点。 3. DNS解析:了解域名系统(DNS)的作用和工作原理,包括域名解析过程、DNS缓存等。掌握如何配置和管理域名。 4. 网络安全:了解网络安全的基本概念,包括跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入等常见的网络安全问题。学习如何防范和处理这些安全漏洞。 5. WebSocket:了解WebSocket协议的基本原理和特点,能够使用WebSocket实现实时通信功能。 6. 前后端交互:掌握AJAX技术,了解JSON、XML等数据格式的基本概念。能够使用XMLHttpRequest对象向服务器发送异步请求,获取并处理服务器返回的数据。 7. 网络调试工具:掌握常用的网络调试工具,如浏览器开发者工具、Postman等,能够利用这些工具进行网络请求的调试和分析。 8. 前端性能优化:了解前端性能优化的基本原则和常用方法,如压缩资源、合并文件、使用CDN等。能够通过优化网络请求和渲染流程来提升网页的加载速度和响应性能。 总之,掌握了这些网络基础知识,能够更好地理解Web前端开发中的网络交互过程,解决常见的网络问题,并进行性能优化,从而提供更好的用户体验。 ### 回答3: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的工作原理和常见的请求方法(GET、POST等),了解HTTP头部信息和状态码的含义,以及HTTP的持久连接和缓存等相关概念。 2. HTML和CSS:熟悉HTML和CSS的基本语法和常用标签,了解HTML文档的结构和CSS样式的应用方式,能够根据设计稿实现页面的布局和样式。 3. JavaScript:熟悉JavaScript的基本语法和常用的DOM操作,了解事件处理、Ajax和跨域请求等基本概念,能够编写简单的交互逻辑和动态网页。 4. 网络安全:了解常见的网络攻击方式(如XSS和CSRF)以及相应的防御方法,熟悉HTTPS协议的工作原理和使用方式,能够编写安全性较高的前端代码。 5. 前端性能优化:了解前端页面加载的过程和性能优化的方法,包括减少HTTP请求、压缩和合并静态资源、使用缓存、异步加载等。 6. 浏览器原理:了解浏览器的工作原理,包括渲染引擎的处理流程、页面解析和布局、渲染性能优化等,能够针对不同浏览器进行兼容性处理。 7. 前端框架和工具:熟悉常用的前端框架和工具(如React、Vue、Webpack等),了解它们的工作原理和使用方式,能够快速搭建和优化项目。 综上所述,掌握以上网络基础知识能够使前端开发者更好地理解和应用Web技术,提高开发效率和网页性能,并且能够处理一些网络安全和兼容性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值