333 views

http状态码,http请求方法,http报文格式字段,重定向和转发的区别

By | 2018年8月31日

当浏览器发起http请求,服务器在响应http请求时,会把http状态码加载响应报文的状态行中,状态码的含义如下

http请求方法
get :获取指定页面的信息,get方法参数附在url后面以?隔开,多个参数之间&连接,不安全可见性高,而且url长度有限,所以get方法传入的参数有限
post:提交数据请求指定资源,比如通过表单来请求数据,请求内容参数方法请求体中,安全
put:客户端向服务器传送的数据代替指定的数据
delete:请求服务器删除指定的页面
head:类似于get,只不过head方法获得的响应没有响应头,只为了获取报头,查看某个页面的状态是很高效的
options:查看服务器的性能
trace:回显服务器收到的请求,用于测试

Http报文
http请求报文
请求行 <method><request-url><version>

请求头 <headers>

空行

请求主体 <entity-body>

只有当method为post和put时,请问报文才会有请求主体信息,空行的作用是告诉服务器,请求首部信息结束,请求头也叫请求首首部,是键值对,附件说明请求信息可以有多个请求头部字段

http响应报文
状态行 <version><status><reason-phrase>

响应首部 <headers>

空行

响应主体 <entity-body>

可以看到响应报文与请求报文只有第一行不同,上面说的状态码就在第一行中

下面重点说请求头部和响应头部的字段
在http中首部有四大分类

(1)通用首部,通用首部的字段可以在请求头部和响应头部共同使用,比如Transfer-Encoding字段,代表了传输的报文采用什么样的编码方式

(2)请求首部,顾名思义里面的字段只能用在请求报文头部,帮助请求告诉服务器自己想要什么不想要什么。

请求首部又细分为安全请求首部,条件请求首部等,其中我们前面说的cookie信息就包含在安全请求首部,客户单通过配置这个子段,告诉服务器自己是否支持cookie

(3)响应首部,顾名思义里面的字段只能用在响应报文头部,类似请求首部,有一个安全响应首部,里面有子段可以配置我们之前说的seesion cookie(jseessionid)

(4)实体首部字段

针对请求报文和响应报文的实体部分使用的首部,比如描述响应时间,响应长度等子段

转发和重定向的区别
转发(forward):是服务器内部的动作,服务器直接转到其他url,使用其中的资源,这个过程客户端是不可见的,客户端请求的url不会发生变化。过程:客户端发起http请求–>服务器接受http请求—>服务器内部调用方法完成请求处理和转发—>将请求的资源发送给客户端。转发时,服务器只能准发到统一web容器下的url,中间传递的自己容器的request

重定向(redirect):是客户端的操作,服务器返回目标地址给客户端,客户端去访问,那么客户端一开始的请求url就会发生变化。过程:客户端发起http请求–>服务器接受http请求返回302状态码—>客户端看见是302状态码,重新发起http请求—>服务器处理请求给客户端响应

发表评论

电子邮件地址不会被公开。 必填项已用*标注