HTTP到底是什么?

article/2025/9/28 2:14:02

HTTP简介

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

HTTP原理

HTTP 协议工作于客户端-服务端架构上。

浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。

HTTP的消息结构

 一个HTTP“客户端”是一个应用程序,通过连接到服务器达到向服务器发送一个或多个HTTP请求的目的;

一个HTTP“服务器”也是一个应用程序,接收客户端的请求并向客户端发送HTTP响应数据;

HTTP使用统一资源标识符URL(Uniform Resource Identifiers)来传输数据和建立连接。

HTTP的两类报文:

请求报文和响应报文。

顾名思义,请求报文就是客户端向服务端发送请求的信号,响应报文就是服务端响应处理后回传给客户端的信号。

 客户端请求报文

客户端发送一个HTTP请求到服务器的请求消息一般包括以下格式:请求行、请求头、空行和请求体,其中空行也是组成部分之一,作用是进行分隔,必不可少。

结合HTTP请求实例说明各部分组成:

GET https://www.baidu.com/content-search.xml HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=12D4BD8584CA4E016E061A2A996EF369; PSTM=1620090350; BAIDUID=12D4BD8584CA4E01C03BA560AACCF2CE:FG=1; BD_UPN=12314753; H_PS_PSSID=33984_31660_33848_33759_33676_33607_33987_26350; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; __yjs_duid=1_1a965d65ab35181f7b7b98cce26990951620094330751; ab_sr=1.0.0_YjM2Y2YwOWI1MDU4ZDEzODMyZDZkNDBlODllOWEzZTdiMjk4YzgzYmUyM2ZjODA4MWM0MDExZTdiMDZlOTQwOWZhMWI0NGQ3NzNhODI2NTYzMWM1NzQ2ZDBmYjhkM2Q1; ispeed_lsm=0; H_PS_645EC=b177fVn0%2Brl2KczNrCfwRaWGfk3JZzrl7ScjgHBcxVvOkubEWrAPvQ6AXa4; BD_HOME=1; __guid=136081015.3970791550720005000.1620116535606.869; monitor_count=2; BA_HECTOR=8121a4848h8l0k0l6o1g9213e0r

请求行:

第一行就是请求行,由请求方法、URL、HTTP版本协议组成,之间用空格隔开,最后用回车或者换行符分割内容

 其中,GET是请求方法,https://www.baidu com/是URL地址,HTTP/1.1指定了协议版本。

几种不同的请求方法:

 GET:最常见的请求方式,通常用于当客户端要从服务器中读取文档时,比如点击网页上的链接或者通过在浏览器的地址栏输入网址的方式来浏览网页,使用的都是GET方式。需要注意的是使用GET方法请求时,请求参数和对应的值是跟在URL后面,通过问号(“?”)和and连接符(“&”)以及“=”号连接。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。例如,/index.php?id=100&slec=yes,这样通过GET方式传递的数据直接表示在地址中。正式因为要传递的参数和值已经存在于URL中,所以采用GET方法请求的HTTP报文是没有请求体的。

缺点:

1.get携带的参数携带在url地址栏 数据保密不安全

2.传输的数据大小有限制 一般不超过1024个字符

POST:

向指定资源提交数据进行处理请求(如提交表单或者上传文件),数据被包含在请求体中。POST 请求可能会导致新的资源的建立和已有资源的修改,对传输的数据大小没有限制,所以可以传输大量的数据,并且因为数据封装在请求体中,没有直接暴露在URL中,所以比较私密和安全。

HEAD:

类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头,服务端接受到HEAD请求后只返回响应头,而不会发送响应内容,这样就提高了传输效率。所以当我们只需要查看某个页面的状态的时候,使用HEAD是非常高效的。

其他请求方式:

OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法,用得比较少。

请求头:

请求头部由键/值对组成,每行一对,键和值用冒号“:”(英文)分隔。请求头部告知服务器所有有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的用户代理信息(浏览器信息): Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36等;

Accept:客户端可识别的内容类型列 :text/html,application/xhtml+xml,application/xml;

Accept-Language:客户端可接受的自然语言 - zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;

Accept-Encoding:客户端可接受的编码压缩格式 - gzip, deflate, sdch, br

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

connection:连接方式,有close和keep-alive两种。

close:告诉WEB服务器或代理服务器,在完成本次请求的响应后,断开连接

keep-alive:告诉WEB服务器或代理服务器。在完成本次请求的响应后,保持连接,以等待后续请求

Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie -

PSTM=1620090350; BAIDUID=12D4BD8584CA4E01C03BA560AACCF2CE:FG=1;

空行:

用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头。

请求体:

请求体包含的就是请求数据,正如上文提到的,当使用的是GET方法的时候,没有请求体。

 服务器响应报文:

客户端向服务端发送请求之后,服务器接收并处理客户端发过来的请求后正常情况下会返回一个HTTP的响应消息,这个就是响应报文。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

 状态行:

格式为:HTTP-Version Status-Code Reason-Phrase CRLF。其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

1xx:指示信息--表示请求已接收,继续处理。2xx:成功--表示请求已被成功接收、理解、接受。3xx:重定向--要完成请求必须进行更进一步的操作。4xx:客户端错误--请求有语法错误或请求无法实现。5xx:服务器端错误--服务器未能实现合法的请求。各类型常见状态代码、状态描述的说明如下:200 OK:客户端请求成功。400 Bad Request:客户端请求有语法错误,不能被服务器所理解。401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。403 Forbidden:服务器收到请求,但是拒绝提供服务。404 Not Found:请求资源不存在,举个例子:输入了错误的URL。500 Internal Server Error:服务器发生不可预期的错误。503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

 响应头:

和请求报文的请求头类似,响应头也由键值对组成,每行一对,键和值用英文冒号 : 分隔。响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息,典型的响应头有:

Server:包含处理请求的原始服务器的软件信息;Date:服务器日期;Content-Type:返回的资源类型 (MIME);Connection:连接方式;close:连接已经关闭;keep-alive:连接已保持,在等待本次连接的后续请求;Cache-Control:缓存控制;Expires:设置过期时间;Set-Cookie:设置 Cookie 信息。

空行: 

作为内容分割,表示以下不再是响应头的内容。

响应体:

服务器返回给浏览器的响应信息。

 HTTP content-type

Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

Content-Type 标头告诉客户端实际返回的内容的内容类型。

语法格式:

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

常见媒体格式类型:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :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-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

http://chatgpt.dhexx.cn/article/T3uegFDj.shtml

相关文章

HTTP是什么

HTTP是什么 ​ HTTP全称为Hyper Text Transfer Protocol&#xff0c;被译为超文本传输协议&#xff0c;是互联网上应用最为广泛的一种网络协议。 ​ HTTP协议是在Web上进行数据交换的基础&#xff0c;是一种“客户端–服务器端”协议。也就是说&#xff0c;请求通常是由像浏览…

HTTP协议的详解(简单易懂)

HTTP是什么 一、HTTP是什么 HTTP全称为Hyper Text Transfer Protocol&#xff0c;被译为超文本传输协议&#xff0c;是互联网上应用最为广泛的—种网络协议。**HTTP协议是在Web上进行数据交换的基础&#xff0c;是一种“客户端-服务器端”协议。**也就是说&#xff0c;请求通…

手机销售系统的设计和实现

技术&#xff1a;Java、JSP等摘要&#xff1a;手机销售系统作为手机信息管理系统的一个分支&#xff0c;已逐渐成为信息化建设的重要组成部分&#xff0c;提供了一个功能强大&#xff0c;使用成本低廉&#xff0c;操作简捷的实时销售管理系统。本文通过手机销售系统的建设以实现…

jsp课程设计:“智多星”智能手机销售网

系统后台开发 一、主页 indexx.jsp <%@ page contentType="text/html;charset=GB2312" %> <HTML> <HEAD> <!--<%@ include file="head.txt" %>--><link rel="StyleSheet" href="dtree.css" ty…

2023年1月手机热门品牌型号排行榜(手机行业趋势分析)

近期苹果降价引起人们的关注&#xff0c;并且优惠较大&#xff0c;iPhone 14 Pro系列在苹果官方授权渠道均降价&#xff0c;线下授权门店普遍降价700元左右。iPhone Pro与Pro Max作为苹果的旗舰产品&#xff0c;通常被认为是更为保值的机型&#xff0c;一般来说&#xff0c;不会…

基于JSP+MySQL的手机在线销售平设计与实现

目 录 摘 要 I Abstract II 1 引言 1 2 需求分析 2 2.1 需求概述 2 2.2 需求规格 4 2.3 功能详细需求描述 6 2.4 界面需求 7 2.5非功能性需求 8 3 平台设计 10 3.1 阐述 10 3.2 关键技术和算法 11 3.3 平台架构 12 3.4 平台类图 13 3.5 平台流程图 14 3.6 数据结构设计 16 3.7 …

Web开发——手机销售网

手机销售网 功能包括用户注册、登录、浏览手机、查询手机、查看购物车、查看订单、退出、返回主页这8个功能,添加了后台管理功能。 一、简单介绍前台功能: 用户注册: 注册成功: 用户登录: 登录成功: 浏览手机: 提交: 查看细节: 放入购物车: 查看购物…

手机销售系统设计与实现

其他项目&#xff0c;点击作者主页 目录 1 系统简介 2 系统相关技术 2.1Java简介 2.2 JavaScript简介 2.3 MySQL简介 2.4 Spring Boot简介 3 需求分析 3.1需求概述 3.2可行性分析 3.2.1经济可行性 3.2.2 技术可行性 3.2.3社会可行性 3.3系统功能分析 3.3.1登…

智能手机销售网后台管理系统手机销售网程序设计

智能手机销售网后台管理系统手机销售网程序设计 信管117136钟晓威 数据库设计功能实现后台设计dtree实现树形菜单数据库设计 数据库连接try { String uri= "jdbc:mysql://127.0.0.1/mobileshop"; String user="root"; String password=""; con…

手机销售网后台设计

《JSP程序设计》手机销售网后台设计 学号&#xff1a;201711671215 本次实验设计以《JSP程序设计》课本第十章的例子项目为基础进行设计添加后台功能&#xff0c;后台页面分成左右两个框&#xff0c;左边显示一个树形菜单&#xff0c;右边根据菜单选择显示相应的交互界面。以…

手机销售网jsp程序设计

一、系统主要模块 二、前端 首页&#xff1a; 注册&#xff1a; 登录&#xff1a; 浏览手机&#xff1a; 查询手机&#xff1a; 查看购物车&#xff1a; 查看订单&#xff1a; 后台管理&#xff1a; 三、后端&#xff08;后台管理&#xff09; 在后台管理当中&#xff0c;主要…

2022年度手机行业排行榜(年度手机行业分析)

如今&#xff0c;随着手机普及率的不断增长&#xff0c;当前手机市场在逐渐饱和。在这一的态势下&#xff0c;手机行业中细分市场成为发展的必然趋势&#xff0c;随着市场细分和目标人群锁定的不断明确&#xff0c;手机市场中中小品牌手机的生存空间在逐渐被挤压&#xff0c;手…

手机销售平台

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

“智多星”智能手机销售网

信管1172谢胜祥 该销售网的全部代码文件及用到的图片均在如下百度网盘内 链接&#xff1a;https://pan.baidu.com/s/14KRdjH7Hk_rX2njRT6OB1w 提取码&#xff1a;8oda 由于以上链接有所有代码&#xff0c;故接下来的报告内容只出现少部分代码&#xff0c;较多的是…

《JSP程序设计》手机销售网

classify.java package mybean.data;public class Classify {String id"",name"",backNews"请输入信息";public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void s…

手机专卖平台网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

手机批发业务—产品选购

每天一小时励志作业&#xff0c;励志成为卷中王中王 手机批发业务—产品选购 &#x1f49a;通过表单来嵌套表格进行页面布局 &#x1f9e1;通过三个按钮来实现“查看购物车”、“收银台结算”、“初始化参数” &#x1f49b;通过 &ltspan&gt &lt/span&gt来做…

智能手机销售网系统

201711671102 曾燃亮 信管1171 智能手机销售网 源代码&#xff1a;(链接&#xff1a;https://pan.baidu.com/s/1EeMBiz3u4pr9ke_nnk2_sQ 提取码&#xff1a;bjfn 我的源代码都在这个网盘里面&#xff09; 一.前端 &#xff08;前面书中给出的代码就不详细讲解&#xff0…

手机销售网

一、前台 前台的实现用了老师给的ch10源代码(即课本第10章代码)运行界面如下: 首页 注册 登录 浏览手机 查询手机 查看购物车 查看订单

手机销售网设计说明书

包含项目内容、目的、er图、流程图、总结 代码在文末 1 项目背景 1.1项目内容 用JSP技术建立一个简单的手机销售网&#xff0c;为用户提供一个购买手机的平台。系统的主要功能模块为注册、登录、购物车、浏览、查询等。在网站的设计中&#xff0c;系统采用MVC模式实现各个模块…