http协议
本文用于学习记录,如有错漏,望大佬不吝指正。
一、 何为Http协议
Http 协议是一个基于TCP/IP 通信协议来传输数据的超文本传输协议,用于从万维网传输超文本(即HTML文件,图片文件,查询结果等)到本地浏览器。目前使用的是http/1.0 ,http/1.1 版 的规范化正在进行中
二、Http 协议的特性
-
http为无状态协议,即服务端 不保留与用户交易之间的任何状态。(这样对于http的响应速度有了极大的提高)
-
简单快速 :客户端向服务器请求时,只需要传送请求方法和路径。常用的请求方法有 get post head等。
-
无连接 每次连接只处理一个请求,处理完成接受到应答后,断开连接。
目前的http 1.1 默认支持keep-alive 即在建立连接后的一段时间内保持这个TCP连接 之后的
请求可以通过这个连接发送请求 ,这样的改变接受的建立连接和关闭连接之间的延时。
-
灵活: 可传输任意形式的数据,通过content-type 标记。
三、请求/响应
http 请求分为三个部分 状态行 请求头 消息主体
get 和 post 请求方式的区别
get 主要目的是为了获取 request-uri 所标识的资源,所以我们可以反复get 而其对服务端不会造成任何影响,这种没有副作用的现象被叫做“幂等”。get的信息直接放在URL的querystring中传输,这样安全性得不到保证,而且其长度也受地址栏长度的限制。
post 目的用于提交 需要在 request-uri 所标识的资源后添加新的数据,这样如果我们反复post相当于反复添加新的数据,会产生很大的副作用,即“不幂等”,其意味着post不能多次执行。post传递数据时 数据隐藏在请求正文中 用户不可见 大小无限制 相对安全
但 由于http本就是明文协议 其实 get和 post本质上都不是、安全的 普遍的做法是通过SSL对http 加密来解决安全性,即HTTPS.
http响应也分三个部分 状态行 响应头 响应正文
其中状态行中会包含相应的状态码,来描述状态
* 1xx 指示信息 表示消息已接受 正在处理
* 2xx 成功 请求接收成功
* 3xx 重定向 要完成请求需要下一步操作
* 4xx 客户端错误 存在语法错误或请求无法实现 如 404 请求资源不存在
* 5xx 服务端错误 500 服务端发生不可预知的错误 无法完成请求