简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。
工作原理
HTTP协议工作于客户端-服务端架构上(也就是CS架构)。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80
,但是你也可以改为8080或者其他端口。
HTTP三点注意事项
无状态 无连接 媒体独立
- HTTP是无连接:
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:
这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是无状态:
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
http消息结构
客户端请求消息结构:
请求行
请求头
空行
请求数据
服务器消息结构:
状态行 eg: HTTP:/1.1 200 ok (包括协议以及状态吗)
消息报头(响应头)(会包含一些 content-type, content-length,Etag,last-modified等信息)
空行
响应正文 (html文档,图片,json数据等)
http请求的方法类型
HTTP1.0(1996年发版)定义了三种请求方法: GET, POST 和 Head方法
HTTP1.x(1997年发版),新增了六种请求方法,OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
http状态码
2XX 成功
- 200 响应数据被正常处理
- 204(not content) 正常响应, 但是没有实体
- 206(partial content) 范围请求,返回部* 分数据, 响应报文中由content-range指定实体内容
3XX 重定向
301(moved permanently) 永久重定向
302(found) 临时重定向, 规范要求-方法名不变,但是都会改变
303(set other) 和 302 类似, 但是必须用 get 方法
304(not modified) 状态未改变,配合 (if-Match, if-Modified-Since, If-None, If-Range,if-Unmodified-Since)
307(temporary Rediect) 临时重定向, 不改变请求方法
4XX 客户端错误
- 400(bad request) 请求报文语法错误
- 401 (unahthorized) 未授权, 需要认证
- 403 (forbidden) 禁止访问,服务器绝句访问资源
- 404 (not found) 服务器无法找到资源
5XX 服务器端错误
- 500 服务器内部故障
- 502 (bad gateway) 网关错误
- 503 (serverunavaliable) 服务不可用