Http协议
什么是Http协议
HTTP,超⽂本传输协议(HyperText Transfer Protocol)是互联⽹上应⽤最为⼴泛的⼀种⽹络协议。
所有的WWW⽂件都必须遵守这个标准。设计HTTP最初的⽬的是为了提供⼀种发布和接收HTML⻚⾯的⽅法。
传输协议:定义了,客户端和服务器端通信时,发送数据的格式
特点:
- 基于TCP/IP的⾼级协议
- 默认端⼝号:80
- 基于请求/响应模型的:⼀次请求对应⼀次响应
- ⽆状态的:每次请求之间相互独⽴,不能交互数据
Http协议的组成
Http协议由Http请求和Http响应组成,当在浏览器中输⼊⽹址访问某个⽹站时,你的浏览器会将
你的请求封装成⼀个Http请求发送给服务器站点,服务器接收到请求后会组织响应数据封装成⼀
个Http响应返回给浏览器。即没有请求就没有响应。
Http请求 request
请求⾏(第一部分)
POST /DemoEE/form.html HTTP/1.1
请求⾏组成部分(三部分)
- 请求⽅式[method]:HTTP协议有7中请求⽅式,常⽤的有2种:GET和POST,其他还有PUT和DELETE等
- 请求的资源: /DemoEE/form.html
- 请求协议/版本: HTTP/1.1
GET请求的特点
- 直接访问的时候,超链接,或者method=get的时候
- 请求参数在请求⾏中,在url后,用问号"?"来连接.
- 请求的url⻓度有限制的,所以请求的参数大小有限制
- 不太安全
POST请求的特点
- 只有在Form表单method=post的时候
- 请求参数在请求体中,是隐藏的不能直接看到
- 请求的url⻓度没有限制的,所以请求的参数大小没有限制,甚至可以是一个大文件
- 相对安全
请求头(第二部分)
请求头是客户端发送给服务器端的⼀些信息,使⽤键值对表示key:value
- Cookie:与会话有关的技术,用于存放浏览器缓存的cookie信息.
- User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关的信息.
请求体(第三部分)
当请求⽅式是post的时,封装POST请求消息的请求参数的,格式如下:
username=zhangsan&password=123
如果请求⽅式为get,那么请求参数不会出现在请求体中,会拼接在url地址后⾯:
http://localhost:8080...?username=zhangsan&password=123
Http响应 response
响应⾏
HTTP/1.1 200 OK
http协议 状态码 状态信息
响应⾏由Http协议,状态码和状态信息组成.
- 常⽤的状态码如下:
状态码 | 含义 |
---|---|
200 | 请求成功 |
302 | 请求重定向 |
304 | 请求资源没有改变,访问本地缓存 |
404 | 请求资源不存在。通常是⽤户路径编写错误,也可能是服务器资源已删除 |
500 | 服务器内部错误。通常程序抛异常 |
- 状态信息:状态信息是根据状态码变化⽽变化的。
响应头
响应也都是键值对形式,服务器端将信息以键值对的形式返回给客户端。
- Location:指定响应的路径,需要与状态码302配合使用,完成跳转.
- Content-Disposition:通过浏览器以下载的方式解析正文.取值:attachment;filename=xx.zip
- Set-Cookie:与会话相关的技术,服务器向浏览器写入cookie.
响应体
响应体是服务器回写给客户端的⻚⾯正⽂,浏览器将正⽂加载到内存,然后解析渲染显示⻚⾯内容