一、请求格式
注意:
即使不存在请求主体,这个空行也是必需的.
1.1 请求行
请求方法:HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
GET:最常见的一种请求方式,当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。地址中”?”之后的部分就是通过GET发送的请求数据,各个数据之间用”&”符号隔开。显然,这种方式不适合传送私密数据。另外,由于不同的浏览器对地址的字符限制也有所不同,一般最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。
POST:对于上面提到的不适合使用GET方式的情况,可以考虑使用POST方式,因为使用POST方法可以允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。
url:访问服务器哪个目录
协议版本:HTTP版本有1.0和1.1两个版本, 1.0版本建立连接后立即断开,下次访 问需要再次建立连接, 1.1版本 建立连接后可以不用断开,直到不发送信息后 才断开节约了资源;
1.2 请求头
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 表示客户端可以接受的内容类型,多个值使用;分号隔开q=0.9 表示权重优先级,*/*表示可以接受任意类型内容;
- Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 表示客户端可以接受的语言
- User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64x64; 浏览器信息,例如使用的是网景的内核, windows64位系统;
- Accept-Encoding: gzip, deflate 支持的压缩格式
- Host: localhost:8888 访问地址
- Connection: keep-alive 保持连接 和HTTP1.1版本有关,默认保持3s
- Content-Type: application/x-www-form-urlencoded 表单提交时才有可能出现,表示表单的数据类型,使用url编码,url编码 % 16位数
- Content-Length: 7 post请求 请求体长度
- Upgrade-Insecure-Requests: 1 告诉服务器,浏览器可以处理https协议
1.3 请求体
只有POST请求才有请求体, 因此 POST请求 请求体中存放的是表单提交的键值对。
例如:name=’zs’&age=10
总结:由上可知,get请求不安全且长度有限。
二、响应格式
2.1 状态行
状态码:
- 1xx:指示信息--表示请求已接收,继续处理。
- 2xx:成功--表示请求已被成功接收、理解、接受。
- 3xx:重定向--要完成请求必须进行更进一步的操作。
- 4xx:客户端错误--请求有语法错误或请求无法实现。
- 5xx:服务器端错误--服务器未能实现合法的请求。
常见状态代码、状态描述的说明如下。
- 200 OK:客户端请求成功。
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
- 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
- 403 Forbidden:服务器收到请求,但是拒绝提供服务。
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
- 500 Internal Server Error:服务器发生不可预期的错误。
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
2.2 响应头
- server: Apache-Coyote/1.1 服务器版本号
- Set-Cookie:JSESSIONID=ECA8005D1235BBB6B9CFCC338A8206FD; Path=/03test; HttpOnly
- Content-Type: text/html;charset=utf-8 响应字符集,告诉浏览器以什么样的字符集解码;
- Content-Length: 265 响应体长度
- Date: Fri, 23 Jun 2017 13:45:01 GMT 发送日期 少8个小时;
- Expires: -1、Cache-control:no-cache、Pragma:no-cache 三个响应头一起使用, 表示禁止浏览器缓存当前页面. 每个浏览器厂商对认识的禁止头不同因此三个一起使用。
2.3 响应体
服务器端返回的数据