一、HTTP报文
1.请求报文
HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。规范把HTTP请求分为三部分:状态行、请求头、消息主体。类似下面这样:
<method> <requests-URL> <version> <headers> <entity-body>
HTTP定义了与服务器交互的不同方法,最基本的方法有4中,分别是Get、Post、Put和Delete。
1。Get用于信息获取,而且应该是安全的和幂等的:所谓安全的是指该操作用于获取信息而非修改信息,幂等意味对同意URLL的多个请求应该返回相同的结果。
GET请求报文示例:
GET /books/?sex=man&name=Professional HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Connection: Keep-Alive
2.Post表示可能修改服务器上的资源的请求:
POST / HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1 Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive sex=man&name=Professional
3.注意:
- Get可以提交的数据量受到URL长度的限制,HTTP协议规范没有对URL长度进行限制,但是特定的浏览器以及服务器可能对对其限制。
- Post是没有大小限制的,HTTP协议也没有进行大小限制,但是处于安全的考虑,服务器软件在实现的时候会做一定的限制
- 其实,在上面的两个例子中,GET和POST数据的内容是一模一样,只是位置不同,一个在URL,一个在HTTP的报文里
2.响应报文
HTTP响应报文也由三部分组成:状态行、响应头、响应正文。
状态行有协议版本、数字形式的状态码以及相应的状态描述组成,各元素之间以空格分隔。
常见的状态码有如下几种:
- 200 OK: 客户端请求成功
- 301 Moved: Permanently 请求永久重定向
- 302 Moved Temporarily: 请求临时重定向
- 304 Not Modified :文件未修改,可以直接使用缓存的文件
- 400 Bad Request :由于客户端请求有语法错误,不能被服务器理解
- 401 Unauthorized :请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
- 403 Forbidden: 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
- 404 Not Found :请求资源不存在
- 500 Internal Server Error: 服务器发生不可预期的错误,导致无法完成客户端的请求
- 503 Service Unavailable: 服务器当前不能处理客户端的请求,在一段时间后,可能回复正常