携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
HTTP协议
HTTP 协议的主要特点 简单快捷、灵活、无连接(连接一次就会断开,不会继续保持连接)、无状态(第一次请求结束后断开,第二次请求 服务端并没有记住之前的状态)
报文:
- 请求报文(请求行、请求头、空行、请求体)
- 响应报文(状态行、响应头、空行、响应体)
HTTP协议 : [超文本传输协议],详细规定了 浏览器 和 万维网服务器 之间互相通信的规则。
HTTP1.0 定义了三种请求方法:
GET 请求指定页面信息,并返回实体主体。
POST 向指定资源提交数据进行处理请求,数据被包含在请求体中。
HEAD 类似于GET请求,返回的响应中没有具体内容,用于获取报头
HTTP1.1 新增了六种请求方法 OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT
HTTP 方法
- GET:获取资源
- POST:传输资源
- put:更新资源
- DELETE:删除资源
- HEAD:获取报文首部
- GET相对不隐私,post 相对隐私 浏览器回退时,get 不会重新请求,但post 会
- get请求会被浏览器主动缓存,但post不会 get请求的参数会保留在浏览器的历史记录中
- get请求在URL中传递的参数有大小限制 get参数直接暴露在url上,相对不安全,post参数放在请求体中
请求报文
- 请求报文:行:包括请求方法、请求的url、http协议及版本。
- 请求头:一大堆的键值对。
- 空行 指的是:当服务器在解析请求头的时候,如果遇到了空行,则表明,后面的内容是请求体。
- 请求体:数据部分。
响应报文
- 状态行:http协议及版本、状态码及状态描述。
- 响应头
- 空行
- 响应体
http 响应状态码
- 1XX: 服务器收到请求,需要请求者继续操作
- 2XX: 成功
- 3XX: 重定向,需要进一步的操作以完成请求
- 4XX: 客户端错误
- 5XX: 服务器错误
- 200: 客户端请求成功
- 300: 资源等被永久转移到其它URL
- 301:所请求页面已经转移到新的URL
- 400:客户端请求有语法错误
- 401:请求未经授权
- 403:被请求页面访问被禁止
- 404: 请求资源不存在
- 500: 内部服务器错误
- 503:请求未完成,服务器宕机
持久链接
- 轮询:http1.0中,客户端每隔很短时间,都会对服务器发起请求,查看是否有新消息(实际上对服务器、客户端都造成大量的性能浪费)
- 长链接:http1.1中,通过Connection:keep-alive 进行长链接。客户端只请求一次,但是服务器会将继续保持连接。(默认请求一次,响应一次; 管线化会把请求打包,一次性发过去,一次性响应回来)