Http请求和响应

什么是协议?

协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准。
协议就是数据传输的约束。

什么是HTTP协议?

HyperText Transfer Protocol (超文本传输协议)是专门为web设计的一种应用层协议。
 HTTP协议,是互联网中最常见的网络通信标准。
用于从万维网(WWW:World Wide Web) 服务器传输超文本到本地浏览器的传输协议。
常用的web服务器软件有Appache,IIs等,web浏览器包括IE,FireFox 等。
当用户在浏览器地址栏中输入网址或通过超链接访问目的网站时,都向目标主机(web服务器)发送一个HTTP请求。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP定义的信息交互处理4步:

1.浏览器与web服务器建立连接。

2.浏览器向服务器发出请求。

3.如果请求被接受,则服务器送回响应,在响应中包括状态码和所需要文件。

4.浏览器和web服务器断开连接。
在这里插入图片描述

HTTP协议的特点

①通信流程:断开式(无状态)
        断开式:HTTP协议每次响应完成后,会断开与客户端的连接
        无状态:由于服务器断开了之前的连接,就无法知晓连接间的关系。
它不对之前发生过的请求和响应状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
  ②内容格式:消息头和消息体

主要特点:

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。


HTTP请求

请求,HTTP向服务器发出一段请求(报文),是由以下四个部分组成的文体。
在这里插入图片描述

HTTP请求报文结构

在这里插入图片描述

请求分为四个部分:

请求行 请求头 空行 请求数据

请求行:
		包括 :请求方法
             请求URL
             HTTP版本

用空格分开 例子:GET /index.html HTTP1.1
解释:
GET 表示请求访问服务器的类型,称为方法(method)。
随后的 /index.html 指明了请求访问的资源对象,也叫作请求URL(request-URI)。
最后的HTTP/1.1 即HTTP的版本号,用来提示客户端使用的HTTP协议功能。
这段请求内容的意思是:请求访问某台HTTP 服务器上的 /index.html 页面资源。

请求头:

关键字和值对组成,每行一对,关键字和值用冒号 “:” 分隔。

请求头:

通知服务器关于客户端的功能和识别。

常见的HTTP请求头:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

空行:

最后一个请求头之后是一个空行,发送回车符和退行,通知服务器不再有头标。
即使第四部分的请求数据为空,也必须有空行。
请求数据:使用post发送数据。

请求数据

请求数据也叫主体,可以添加任意的其他数据。
服务器接收到请求后,解析请求,如果请求的是静态资源,如文档、图片等,则将请求的资源返回给浏览器;如果请求的的是动态的服务器程序,如:Servlet,JSP,ASP,CGI等,则在服务器端运行程序后返回运行的结果,通常的运行结果是生成一个HTML文档。

HTTP请求的方法:

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
获取服务器与客户端打交道的参数,并不与获取的资源直接相关。

2、HEAD
向服务器索与GET请求相一致的响应,服务器只返回状态行和头标,响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

3、GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
检索URL中标识资源的一个简单请求。

4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form。
服务器接收被写入客户端输出流中的数据请求。

5、PUT
向指定资源位置上传其最新内容。
服务器保存请求数据作为指定URL新内容的请求。

6、DELETE
请求服务器删除Request-URL所标识的资源

7、TRACE
回显服务器收到的请求,主要用于测试或诊断。
web服务器返回HTTP请求和头标的请求。

8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
已文档化但当前未实现的一个方法,预留做隧道处理。

patch 方法是新引入的,是对PUT方法的补充,用来对已知资源进行局部的更新。

在WEB应用中,通常只是用get和post方法。
注意:
1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

get 和 post区别

区别:
    get请求无消息体(可以有消息体 但是在浏览器中直接发出的GET只能由一个URL触发),只能携带少量数据
    post请求有消息体,可以携带大量数据
  携带数据的方式:
    get请求将数据放在url地址中
     post请求将数据放在消息体中
GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
GET方式提交的数据最多只能有1024字节(跟浏览器有关 不同的浏览器对url 的限制不同),而POST则没有此限制。

HTTP响应

在这里插入图片描述

响应报文结构

在这里插入图片描述

响应分为四个部分:

状态行 响应头标 空行 响应数据

状态行 :
				HTTP版本:向客户端指明其可以理解的最高版本
                响应代码:三维的数字代码,指出请求的成功或失败,如果失败则指明原因。
                响应描述:为响应代码的可读性解释。

例子: HTTP/1.1 200 Ok

解释:
HTTP /1.1 表示服务器对应的HTTP版本
200 OK 表示请求的处理结果的状态码(status code) 和原因短语(reason-phrase)。

响应代码的说明:

1xx: 信息请求收到继续处理。
2xx: 成功,行为被成功的接收,理解和采纳。
3xx: 重定向,为了完成请求,必须进一步执行动作。
4xx:客户端错误
5xx:服务器端错误

关于状态码详细请看

响应头标
空行

响应头后面的空行是必须的。

响应数据

服务器返回给客户端的文本信息。

常见的HTTP响应头:

在这里插入图片描述
在这里插入图片描述

参考博文及书籍:https://www.cnblogs.com/cp168168/p/7923227.html
https://blog.youkuaiyun.com/weixin_34168700/article/details/89690499
https://www.jianshu.com/p/896e62347c97
《图解HTTP》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值