1、请求报文 Request
请求报文包括四个部分:请求行、请求头、请求空行、请求体
(1)请求行
格式: 请求方法 请求URL 请求协议/版本 (中间用空格隔开)
例如: GET /index.html HTTP/1.1
其中请求方法包括:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
1)GET
最常见的一种请求方式,当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地 址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号("?")代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind,这样通过GET方式传递的数据直接表示在地址中。
显然,这种方式不适合传送私密数据。另外,由于不同的浏览器对地址的字符限制也有所不同,一般最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。
GET请求方式满足幂等性。
2)POST
POST方法将请求参数封装在HTTP请求体中,以名称=值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。
POST请求方式不满足幂等性。
3)HEAD
HEAD和GET一样,用于查询数据,只不过服务端接受到HEAD请求后只返回响应头,而不会发送响应体。当我们只需要查看某个页面的状态的时候,使用HEAD是非常高效的,因为在传输的过程中省去了页面内容。
4)TRACE
如果用了代理服务器上网,使用TRACE请求可以查看代理是否修改了HTTP请求。
5)OPTIONS
用来查看服务器允许的请求方法有哪些,服务器会在响应头里返回支持的访问方式(关键字:allow)。也就是说,服务器不一定支持全部的请求方法。
(2)请求头
请求头部通知服务器有关于客户端请求的信息
格式:关键字:值 (关键字和值之间用:隔开)
例如:user-agent : Mozilla/5.0(Windows NT 6.1;rv:15.0) Firefox/15.0 // 告诉服务器我的浏览器版本
host : localhost // 请求的主机名
content-length : 2 // 请求体的数据长度(GET方式没有)
content-type : application/x-www-form-urlencode // 请求体的数据格式
(3)请求空行
用一个空行标识请求头的结束
(4)请求体
格式:参数名 = 参数值 (参数名和参数值之间用=隔开)
例如:username = 张三
age = 23
请求体不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求体相关的最常使用的请求头是Content-Type和Content-Length。
2、响应报文 Response
响应报文也由四部分组成:响应行、响应头、响应空行、响应体
(1)响应行
格式: 协议版本 状态码 状态描述 (中间用空格隔开)
例如: HTTP/1.1 200 OK
状态码的分类:
常见的状态码及状态描述:
200 OK //客户端发过来的数据被正常处理
204 Not Content //正常响应,没有实体
301 Moved Permanently //永久重定向
302 Found //临时重定向
303 See Other //和302类似,但必须用GET方法
304 Not Modified //状态未改变,对于图片这样的大文件,如果每次请求都在响应体里返回很耗费资源,所 以如果在浏览器有对应的缓存,且内容没有改变,则响应体里就不放对应的数据了,这个时候就会用这个状态码返回
400 Bad Request //请求报文语法错误
401 unauthorized //需要认证
403 Forbidden //服务器拒绝访问对应的资源
404 Not Found //服务器上无法找到资源
500 Internal Server Error //服务器故障
503 Service Unavailable //服务器处于超负载或正在停机维护
(2)响应头
格式:关键字:值 (关键字和值之间用:隔开)
例如:Content-Encoding: gzip //响应体的编码格式
Content-Type: text/html;charset=utf-8 //响应体的数据类型
(3)响应空行
用一个空行标识响应头的结束
(4)响应体
响应的具体内容,网页或图片文件等。