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

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

1**

信息,服务器收到请求,请求者继续操作

 

2**

成功,操作成功接收并处理

200:请求成功

3**

重定向,需要进一步的操作完成请求

301 :资源被永久转移到其他URL

4**

客户端错误,请求包含语法错误或无法完成请求

404 :请求的网页不存在

5**

服务器错误,服务器在处理请求时发生错误

500:服务器内部错误


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请求--->服务器处理请求给客户端响应

猜你喜欢

转载自blog.csdn.net/wangdongli_1993/article/details/82053103
今日推荐