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