一文搞懂 HTTP 协议

简介: 一文搞懂 HTTP 协议

HTTP 协议简介


HTTP 协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传输协议。是基于TCP/IP通信协议来传递数据的。


HTTP 传输数据主要包括HTML文件,图片文件等。协议工作于客户端-服务器架构上。一般是浏览器作为 HTTP 客户端通过URL向 HTTP 服务端(web服务器发送所有请求,默认端口为80)


协议特点:


  • 无连接:每次连接只处理一个请求。服务器处理完请求,并收到客户的应答即断开连接。


  • 媒体是独立的:只有客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP发送。客户端和服务器指定适合的MIME-type内容类型。


  • 无状态:对事物处理没有记忆能力。如果后续要处理前面的信息,必须重传。


HTTP 消息结构


客户端请求消息客户端请求消息格式如下:


  • 请求行


  • 请求头部


  • 空行


  • 请求数据


image.png


服务器响应消息服务器响应也由四部分组成:


  • 状态行


  • 消息头


  • 空行


  • 响应正文


image.png


HTTP 请求方法


HTTP1.0:GET,POST 和 HEADHTTP1.1:新增六种请求:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。


方法 描述
GET 请求指定页面信息,并返回实体主体
HEAD 类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
POST 向指定资源提交数据处理请求(提交表单或者文件),数据包包含在请求体中。
PUT 从客户端向服务器传输的数据取代指定的文档内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP/1.1 协议预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器性能
TRACE 回显服务器收到的请求,主要用于测试或诊断
PATCH 是对PUT 方法的补充,用来对已知资源进行局部更新


HTTP 响应头消息


HTTP 请求头提供了关于请求,响应或者其他的发送实体消息。响应头消息如下:


应答头 说明
Allow 服务器支持哪些请求方法(GET、POST等)
Content-Encoding 文档编码方法。只有在解码后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著的减少HTML文档的下载时间。服务器可以通过查看Accept-Encoding(request.getHeader("Accept-Encoding")) 检查浏览器是否支持gzip.
Content-Length 表示内容长度。只有当浏览器使用持久连接时才需要这个数据
Content-Type 表示文档属于什么MIME类型。一般默认text/plain。但通常需要显示的指定为text/html
Date 当前的GMT时间
Last-Modified 文档最后改动时间
Location 表示客户应当到哪里去提取文档
Refresh 表示浏览器应该在多少时间之后刷新文档。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。
Server 服务器名字
Set-Cookie 设置和页面关联的Cookie

HTTP 状态码


当访问一个网页时,浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页的服务器会返回一个包含HTTP状态码的信息头,用以响应浏览器请求。常见的状态码如下:


  • 200:请求成功


  • 301:资源(网页等)被永久转移到其他URL


  • 404:请求的资源不存在


  • 500:内部服务器错误


状态码分类:


分类 描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步操作以完成请求
4** 客户端错误,请求语法错误或者无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误


HTTP content-type


Content-Type (内容类型)。用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。


  1. Content-Type: text/html;charset=utf-8


常见的媒体格式如下:


  • text/html:HTML格式


  • text/plain:纯文本格式


  • text/xml:XML格式


  • image/gif:gif图片格式


  • image/jpeg:jpeg图片格式


  • image/jpg:jpg图片格式


  • image/png:png图片格式


以application开头的媒体格式类型:


  • application/xhtml+xml:XHTML格式


  • application/xml:XML数据格式


  • application/atom + xml:Atom XML聚合格式


  • application/json:JSON数据格式


  • application/pdf:pdf格式


  • application/msword:word文档格式


  • application/octet-stream:二进制数据(如常见的文件下载)


  • application/x-www-from-uelencoded:中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
相关文章
|
3月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
6月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
736 68
|
5月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
600 2
|
5月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
225 0
|
5月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
223 0
|
5月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
528 0
|
6月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
639 1
|
5月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
736 0
|
7月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
243 17