HTTP请求:
HTTP请求报文的第一行各个字段之间以一个空格隔开。
方法 URL HTTP版本 回车换行
首部字段(可以是多行)
回车换行
请求实体
HTTP响应:
HTTP版本 状态码 状态码文字描述 回车换行
首部字段(可以是多行)
回车换行
响应主体
关于状态码:
1xx:表示请求收到了,正在处理
2xx:表示请求正常处理完毕,常见的就是200:请求成功,204:请求成功,但无实体返回,使用HEAD方法时会返回该状态码
3xx:请求重定向,比如301永久重定向,302临时重定向,303:see other 在实际上许多浏览器将302视为303响应。
(关于302与303的区别:
303与302有着相同的功能,但是303明确表示客户端应该使用GET获取服务器端的资源。并且HTTP1.1之前的许多浏览器无法正确识别303。我这里讨论的HTTP均基于HTTP1.1。)
4xx:客户端错误代码 比如400:请求报文中存在语法错误,404:页面找不到,403:服务器拒绝浏览器访问请求的那个资源
5xx:5xx系列对于后端开发者来说算是再常见不过的错误了。这表示服务器内部错误。做java EE的就经常见到500这个状态码,以及那一大坨的异常栈。此外还有503:服务器超负载或停机维护
关于首部字段:
首部字段的格式如下
首部字段名:值
首部字段类型分为四种:通用首部字段、请求首部字段、响应首部字段、实体响应字段
HTTP1.1中字段名很多,我只记得几个非HTTP1.1的setCookie、Cookie,其他的就不写了。