http的报文结构和状态码总结
1.在TCP/IP协议簇中的位置
位于四层协议的应用层。基于运输层的TCP协议实现。
2.请求报文结构
包括报文首部、空行、报文主体3部分。
报文首部: 第一行:请求行,请求方法,请求路径,HTTP版本 后续为各个首部:包括请求首部字段、通用首部字段和实体首部字段
空行:
报文主体: 向服务器发送的数据。如get请求中的各个参数。post请求中的参数。
3.响应报文结构
也是包括报文首部、空行、报文主体3部分。
报文首部: 第一行:状态行,包括HTTP版本 状态码 原因短语 后续为首部字段:响应首部字段、通用首部字段、实体首部字段
报文主体:服务器返回的响应体。如HTTM页面。
4.常见状态码
4.1 2xx
2开头的状态码表示成功
200 OK
正常处理并返回了
204 No Content
正常处理了,但响应中不含主体。 用于需要从客户端往服务器发送数据但不需要响应内容的情况。
206 Partial Content
客户端进行了范围请求,服务器正常返回了。请求时通过Content-Range指定范围。
4.2 3xx
重定向相关
301 Moved Permanently
永久性重定向。表示请求的资源已经永久性分配了新的URI,以后应该使用该新的URI。 使用Location首部字段表示新URI地址。浏览器会重新请求一次该URI。
302 Found
临时重定向,希望用户本次使用的新分配的URI。 和301非常类似,浏览器也会根据Location字段重新进行请求。 在实际开发中常用于页面跳转。
303 See Other
和302功能相同,只是明确表明客户端应该使用get请求。
304 Not Modified
和重定向没有关系。表示资源没有改变,可直接使用客户端未过期的缓存。在请求附带条件时有可能返回这个状态码。
4.3 4xx
客户端错误
400 Bad Request
请求中有语法错误。如参数拼接的的问题等。
401 Unauthorized
未认证
403
禁止访问
404 Not Found
4.4 5xx
服务器错误
500
服务器内部错误
503
服务不可用
5 host首部的作用
区分不同的主机。有些服务器运行多个网站,每个网站有不同的域名。当接收请求时如果不指定域名则无法知道需要哪个网站响应。