HTTP请求方式中的8种请求方式

介绍:
HTTP是超文本传输协议,其定义了客户端和服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务器端的端口,而客户端的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口。需要注意的是,现在大多数访问使用HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问,HTTPS协议的服务器可能会被拒绝。

HTTP请求的方法:
HTTP/1.1协议中共定义了八种方法,来表明Request-URL指定的资源不同的操作方式。
HTTP/1.0定义了三种请求方法:GET、POST、和HEAD方法
HTTP/1.1新增了五种方法:OPTIONS,PUT,CONNECT,DELETE和TRACE方法。

方法 描述
GET 请求指定的页面内容,并返回实体主体
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据包含在请求体中。POST请求可能会导致新的资源的建立或者已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的页面
CONNECT HTTP1.1协议中预留给能够将连接方式改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断

HTTP工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求行(请求的方法、URL、协议的版本、)请求头部、空行和请求数据。 服务器以一个状态行作为响应,响应的内容包含状态行(协议的版本,成功或者错误代码,服务器信息),响应头部、空行和响应数据。

HTTP请求/响应的步骤: 客户端连接到Web服务器—>发送Http请求(一个请求报文由请求行、请求头部、空行和请求数据4部分组成。)—>服务器接受请求并返回HTTP响应(一个响应由状态行、响应头部、空行和响应数据4部分组成。)—>释放TCP连接—>客户端浏览器解析HTML内容

1、客户端连接到Web服务器
一个http客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立TCP套接字连接
2、发送http请求
通过http套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行,请求头部,空行,请求数据4部分组成。
3、服务器接受请求并返回http响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个状态响应由状态行,响应头部,空行和响应数据4部分组成。
4、释放TCP连接
若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection模式为keep-alive,则该连接会保持一段时间,在该时间内可以继续接收请求。
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

HTTP请求消息requset (客户端发送给服务器的报文)
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行,请求头部,空行,请求数据四部分组成

在这里插入图片描述
第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本
GET /562f25980001b1b106000338.jpg HTTP/1.1
GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。

第二部分:请求头部,紧接着请求行之后的部分,用来说明服务器要使用的附加信息

第三部分:空行,请求头部后面的部分必须是空行,即使第四部分的数据为空,也必须要有空行

第四部分:请求数据也叫主体,可以添加任意的其他数据

HTTP请求消息Response(服务器返回给客户端的响应消息)
HTTP响应由状态行,消息报头(响应头部),空行,响应数据4部分组成

例子:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

< html >
< head>< /head>
< body>

< /body>
< /html>

第一部分:状态行,由HTTP版本号,状态码,状态消息三部分组成
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。

GET与POST:
GET方法提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” ,‘?’划分域名和GET提交的参数,A=B只中的A是参数名,B是参数值,多个参数之间用&分割。一般来说,浏览器处理的URL最大限度长度为1024B,所以GET方法提交参数的长度由限制。

“post”方法提交的数据会附在正文上,一般请求正文的长度是没有限制的,但表单中所能处理的长度一般为100k(不同协议不同浏览器不一样),而且需要考虑下层报文的传输效率,不推荐过长。

所以GET方法可以用来传输一些可以公开的参数信息,解析也比较方便,如百度的搜索的关键词,而POST方法可以用来提交一个用户的敏感信息(如果不使用HTTPS加密,报文正文仍旧是明文,容易被人截获读取

比较GET与POST
在这里插入图片描述
1、HTTP 只有POST和GET 两种命令模式;
2、 POST 是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.POST的信息作为HTTP 请求的内容,而GET是在HTTP 头部传输的;
3、POST与GET在HTTP 中传送的方式不同,GET的参数是在HTTP 的头部传送的,而Post的数据则是在HTTP 请求的内容里传送;
4、POST传输数据时,不需要在URL中显示出来,而GET方法要在URL中显示;
5、 GET方法由于受到URL长度的限制,只能传递大约1024字节;POST传输的数据量大,可以达到2M;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章