HTTP实用指南 | 青训营笔记

90 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第7天。

一、本堂课重点内容:

  • HTTP与HTTPS的区别及其原理
  • 使用的场景和作用

二、详细知识点介绍:

初始HTTP

HTTP(Hyper Transfer Proctocol 超文本传输协议): 基于TCP协议,用来规范客户端与服务器的数据传输的格式,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。 HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。 HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。 HTTP 教程 | 菜鸟教程 (runoob.com)

HTTP特点:
应用层协议,基于TCP协议
无连接:无连接的含义是限制每次连接只处理一个请求
简单可扩展
无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。

协议分析

1659618696431.png

报文

HTTP的请求报文由:请求行、头部、空行、主体(请求数据)四个部分组成

请求行:

请求行由请求Method,URL字段HTTP Version三部分组成,总来来说就是定义了请求方式:

GET /example.html HTTP/1.1(CRLF)

请求类型:

1659619282604.png

请求头

请求头由一系列的键值对组成,允许客户端向服务器发送信息或者客户端自身的信息:

1659619486686.png

状态码

  • 200 OK
  • 301 资源(网页)被永久转到其他URL
  • 302 临时跳转
  • 404 找不到
  • 403 被静止
  • 401 未授权
  • 500 内部错误
  • 504 网关或服务器无法在规定的时间内获得想要的响应

Method

Safe(安全的):不会修改服务器数据的方法

  • GET
  • HEAD
  • OPTIONS ldempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。
  • GET
  • HEAD
  • OPTIONS
  • PUT
  • DELETE

响应头

1659619903473.png

缓存

1659620006634.png

1659620020779.png

HTTPS

HTTPS概述:(Hypertext Transfer Protocol Secure)超文本传输安全协议,是以网络安全为目标的HTTP通道,经过TSL/SSL加密,简单来讲就是HTTP的安全版

加密分为:对称加密和非对称加密。

    对称加密:加密和解密都是使用同一个密钥。
    复制代码
    非对称加密:加密和解密需要使用两个不同的密钥(公钥和私钥)。

三、实战案例:

// 全局配置
axios.defaults.baseURL = "https://api.exanple.com";
// 添加请求拦截器
axios.interceptors.requestuse(function(config){
    // 在发送请求前做了什么
    return config;
},function(error){
    // 对请求错误做些什么
    retuen Promise.reject(error)
})

// 发送请求
axios({
    method:'get',
    url:'http://test.com',
    reponseType:'stream'
}).then(function(response){
    response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
})

四、课后个人总结:

这是我在青训营的第七节课,主要讲的是网络方面的知识,讲到HTTP我就想到了咋们经典的面试题“输入url之后发生了什么”,所以在这之前对这方面的知识有一定的了解,但是没有研究过原理啥的,就是知道有这么个东西,今天听老师详细总结了也是受益颇深,所以把在课上对我有用的知识点总结了一下,巩固一下知识点。