http请求响应过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http请求与响应过程
(1)请求方法URI协议/版本
请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1目前支持7种请求方法:GET、POST、HEAD、OPTIONS、
PUT、DELETE和TARCE。
GET 请求获取由Request-URI所标识的资源。
POST 在Request-URI所标识的资源后附加新的数据。
HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。
PUT 请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE 请求服务器删除由Request-URI所标识的资源。
TRACE 请求服务器回送收到的请求信息,主要用语测试或诊断。
在Internet应用中,最常用的方法是GET和POST。
URI完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最
后,协议版本声明了通信过程中使用HTTP的版本。
(2)服务器响应状态码
状态代码:
状态代码由3位数字组成,表示请求是否被理解或被满足。
状态描述:
状态描述给出了关于状态代码的简短的文字描述。
状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。
第一个数字有五种可能的取值:
- 1xx: 指示信息—表示请求已接收,继续处理。
- 2xx: 成功—表示请求已经被成功接收、理解、接受。
- 3xx: 重定向—要完成请求必须进行更进一步的操作。
- 4xx: 客户端错误—请求有语法错误或请求无法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。
状态代码状态描述说明
200 OK --客户端请求成功
400 Bad Request --由于客户端请求有语法错误,不能被服务器所理解。
401 Unauthonzed --请求未经授权,请求身份认证。这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden --服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
404 Not Found --请求的资源不存在,例如,输入了错误的URL。
500 Internal Server Error --服务器发生不可预期的错误,导致无法完成客户端的请求。
503 Service Unavailable --服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
2.基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤:
1) 建立连接:客户端与服务器建立TCP连接
2) 发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交。
3) 发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息。
4) 关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话。
一、HTTP请求响应过程与HTTPS区别
HTTP协议
HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本。
服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议。与之类似的还有文件传送协议(file transfer protocol,FTP),简单邮件传送协议(simple mail ttransfer protocol,SMTP)等。
HTTP是在七层网络模型中的应用层的协议,由发送请求和接受响应构成,是一个标准的客户端服务器模型。与此同时,HTTP是一个无状态的协议。也就是说,不能通过一个状态判断连接的状态,因此有时候,计算机之间通信需要通过其他协议来协同工作,一起提供支持。
HTTP协议的工作特点
相对于其他网路传输协议,HTTP有着自己的特点,这也支撑了HTTP协议的基本职能。
(1)基于B/S 模式,即客户/服务器模式。同时可以提供登陆认证和网间安全传输,例如HTTP下加入SSL层,可以提供安全的HTTPS服务。
(2)通信开销小,简单快速,传输成本低。服务器请求某些一定的服务时,浏览者通常只需在请求报文中添加请求路径和方法。最一般的情形,例如GET、HEAD、POST等,这也是我们使用最多的。
每一种请求方法都有自己的适用范围,在请求报文的内部,通过一些规则,说明了用户与Web服务器之间沟通的类型。同时,HTTP协议规则较为简单,因此使用HTTP服务器的系统,代码和程序规模都会比较轻量级,但是通信的速度却效率较高。
(3)使用灵活:超文本协议,允许服务器和客户端传输任意类型或者任意数据结构的数据对象。而且,通过一个简单的头信息,例如将正在传输的类型由Content-Type加以标记,于是可以区分开。
(4)节省传输时间:最初版本的HTTP协议使用非持续连接,只允许发送并处理一个连接,当请求响应完成,也就是服务器完成客户端的请求,同时收到了客户端浏览器的应答后,连接会立即断开。有了这种特点,通信方式节省了大量用于数据传输和等待应答的时间,时间成本变得非常小。
同时,高版本HTTP协议,HTTP 1.1支持持续连接:多个对象可以通过一个连接可传送,不需要每次传输一个web对象就去创建一个新的连接。
(5)可能影响传输效率,无状态:HTTP协议是无状态协议。无状态,如果协议对于事务处理没有记忆的机制,不能存储处理进度,此时,如果后续的操作需要前面的处理信息,就需要重新发送对象即必须重传,这样的后果是,可能多次连接才能完成操作,数据量会因此变大。“在服务器端,每个HTTP请求都要启动独立的线程去处理,减少Http请求的数目可以有效提高访问性能(《大型网站技术架构》·李智慧)”。
HTTP协议的工作原理
通常情况下,HTTP协议的工作原理很好理解,用户通过客户端向服务端发起一个请求,创建一个TCP连接,指定端口号,默认是80,然后连接到服务器工作。在那个端口监听浏览器请求。一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回一个响应状态,比如"HTTP/1.0 404 OK",同时会返回特定的数据内容,如请求的资源,错误代码,其它状态信息等等。
HTTP协议的报文格式
HTTP协议的请求报文
当浏览器向服务器发送一个请求到Web服务器,它发送一个数据块,或请求信息,
HTTP请求信息包括3部分:
请求方法URI协议/版本;
请求头(Request Header);
请求正文;
下面是一个HTTP请求的示例:
GET/test.jsp HTTP/1.1
Accept:image/test.image/jpeg,*/*