Http协议
简介:
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。
特点:
- 基于TCP/IP
- 基于请求、响应模式:先从客户端开始建立通信,服务端在没有接受请求之前不会发送响应
- 无状态保存:对请求和响应之间的通信状态不进行保存。对发送过的请求和响应不做持久化处理。但是有cookie和session会话跟踪技术
- 无连接:限制每次连接只处理一个请求。处理完请求,收到客户端的应答后,断开连接。
浏览器向服务器发送数据,服务器向浏览器发送数据都需要遵循的协议。
请求格式:
1 请求首行: 2 请求方式 请求的url 请求协议的版本 3 GET //?a=1 HTTP/1.1\r\n 4 5 请求头 6 Host: 127.0.0.1:8800\r\n 7 Connection: keep-alive\r\n 8 Pragma: no-cache\r\n 9 Cache-Control: no-cache\r\n 10 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n 11 Accept: image/webp,image/apng,image/*,*/*;q=0.8\r\n 12 Referer: http://127.0.0.1:8800/\r\n 13 Accept-Encoding: gzip, deflate, br\r\n 14 Accept-Language: zh-CN,zh;q=0.9 15 16 \r\n\r\n
17 请求体
浏览器发送的数据。服务器器以\r\n隔开。\r\n\r\n后面的是请求体。
如果是get请求:数据放url上
如果是post请求:数据放末尾,也就是只有post才有请求体。get是没有的
响应格式:
1 响应首行 2 HTTP/1.1 200 OK\ 3 协议版本 状态码 状态码短语 4 5 响应头 6 和请求的响应头差不多 7 8 响应主体 9 r\n\r\n%s'%data 10 11 常用状态码 12 1 13 2 成功 14 3 重定向 15 4 请求的资源找不到 客户端错误 服务端无法处理请求 16 5 服务端错误 服务端处理请求出错
请求方式:get和post的区别
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.。
- GET与POST请求在服务端获取请求数据方式不同。
- GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.。一个安全,一个不安全。
常见状态码: