HTTP请求报文与响应报文格式,含:get与post的区别

HTTP 请求报文格式:

HTTP 请求报文主要由请求行,请求头部,请求正文3部分组成

HTTP请求报文与响应报文格式,含:get与post的区别_第1张图片

1 ,请求行

由3部分组成,分别为:请求方法,URL(见备注1 )以及协议版本,之间由空格分隔

请求方法包括GET,HEAD,PUT,POST,TRACE,OPTIONS,DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的(见备注) 2

在互联网应用中,最常用的方法的英文GET状语从句:POST

得到 

GET 方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向网站服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上

例如是:http://127.0.0.1/login.jsp名称=张氏与年龄= 30&提交=%CC%E +%BD%BB

从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容),另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大

Post POST 方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据.POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送网络服务器,这就克服了GET方法中的信息无法保密和数据。因此,出于安全的考虑以及对用户隐私,通常表单提交时采用POST方法。   从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准 

协议版本的格式为:HTTP /。主版本号次版本号,常用的有HTTP / 1.0和HTTP / 1.1

HTTP1.0 和HTTP1.1的区别:

1)在HTTP1.0协议中,客户端与网络服务器建立连接后,只能获得一个网络资源。

2)HTTP1.1 协议,允许客户端与网络服务器建立连接后,在一个连接上获取多个网络资源。(常用)

面试中常会问道获取发布请求的区别:


类别

GET

POST

点击刷新或返回按钮

没有影响

重新发送数据

添加书签

可以

不可以

缓存

可以

不可以

编码类型

应用程序/ x-WWW窗体-urlencoded

application / x-www-form-urlencoded或multipart / form-data。请为二进制数据使用多编码

历史记录

没有

长度限制

有(1024K)

没有

数据类型限制

只允许ASCII字符类型

没有限制,可以是二进制数据

安全性

 

查询字符串会显示在地址栏的网址中,不安全,请不要使用GET请求提交敏感数据

 

因为数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以看POST 求情比GET 请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输

可见性

查询字符串在URL中可见

查询字符串不会显示在地址栏中,不可见



2 ,请求头部

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔

常见请求头如下:

请求头

说明

主办

接受请求的服务器地址,可以是IP:端口号,也可以是域名

用户代理

发送请求的应用程序名称

连接

指定与连接相关的属性,如连接:保持活动

接收字符

通知服务端可以发送的编码格式

接受编码

通知服务端可以发送的数据压缩格式

接受语言

通知服务端可以发送的语言

头部请求的求最后会有一个空行,表示请求头部结束,接下来为请求正文,行这一非常重要,必不可少

3 ,请求正文

可选部分,比如GET请求就没有请求正文

GET 请求示例:

HTTP请求报文与响应报文格式,含:get与post的区别_第2张图片

POST 请求示例:

HTTP请求报文与响应报文格式,含:get与post的区别_第3张图片

 

HTTP 响应报文格式:

HTTP 响应报文主要由状态行,响应头部,响应正文3部分组成

HTTP请求报文与响应报文格式,含:get与post的区别_第4张图片

1 ,状态行

由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔

状态代码为3位数字,200〜299的状态码表示成功,300〜399的状态码指资源重定向,400〜499的状态码指客户端请求出错,500〜599的状态码指服务端出错( HTTP / 1.1向协议中引入了信息性状态码,范围为100〜199)

这里列举几个常见的:

状态码

说明

200                    

响应成功

302

跳转,跳转地址通过响应头中的位置属性指定JSP中Forward和Redirect之间的区别

400

客户端请求有语法错误,不能被服务器识别

403

服务器接收到请求,但是拒绝提供服务(认证失败)

404

请求资源不存在

500

服务器内部错误

2 ,响应头部

与请求头部类似,为响应报文添加了一些附加信息

常见响应头部如下:

响应头

说明

服务器

服务器应用程序软件的名称和版本

内容类型

响应正文的类型(是图片还是二进制字符串)

内容长度

响应正文长度

内容字符集

响应正文使用的编码

内容编码

响应正文使用的数据压缩格式

内容语言

响应正文使用的语言

位置

用于重定向接受者到一个新的位置

响应示例:

HTTP请求报文与响应报文格式,含:get与post的区别_第5张图片

备注1-PS

URI ,URL和URN之间的区别

URI 全名为UniformResource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成

URL 全名为UniformResource Locator(统一资源定位),通过描述资源的位置来标识资源

URN 全名为UniformResource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化

HTTP 规范将更通用的概念URI作为其资源标识符,但是实际上,HTTP应用程序处理的只是URI的URL子集

备注2- 请求方法

方法

描述

得到

对服务器资源的简单请求

类似于获取请求,只不过返回的响应中没有具体的内容,用于获取报头

POST

用于发送包含用户提交数据的请求

传说当前请求文档的一个版本

删除

发送一个用来删除指定文档的请求

跟踪

发送请求的一个副本,以跟踪其处理进程

OPTIONS

返回所有可用的方法;可检查服务器支持哪些方法

CONNECT

用于SSL隧道的基于代理的请求


 


你可能感兴趣的:(HTTP)