HTTP实用指南 | 青训营笔记

67 阅读3分钟

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

初识HTTP

image.png

什么是HTTP

  • Hyper Text Transfer Protocol
  • 应用层协议,基于TCP协议
  • 请求 响应
  • 简单可扩展
  • 无状态

协议分析

发展

image.png

报文

HTTP/1.1

image.png

Method

image.png
  • Safe:不会修改服务器的数据的方法(GET HEAD OPTIONS)

  • Idempotent:同样的请求被执行一次与连续执行多次的结果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的(GET HEAD OPTIONS PUT DELETE)

状态码

image.png
  • 200 OK-客户端请求成功
  • 301-资源(网页等)被永久转移到其它URL
  • 302-临时跳转
  • 401 Unauthorized -请求未经授权
  • 404 -请求资源不存在,可能是输入了错误的URL
  • 500-服务器内部发生了不可预期的错误
  • 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。

Restful API

RESTful API :一种API设计风格;REST - Representational State Transfer

  1. 每一个URI代表―种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现层﹔
  3. 客户端通过HTTP method,对服务器端资源进行操作,实现"表现层状态转化".

常用请求头

image.png

缓存

image.png image.png

Cookie

image.png

HTTP2概述:更快、更稳定、更简单

image.png image.png image.png

HTTPS概述

  • HTTPS : Hypertext Transfer
  • Protocol Secure
  • 经过TSL/SSL加密

  • 对称加密︰加密和解密都是使用同一个密钥
  • 非对称加密,加密和解密需要使用两个不同的密钥∶公钥(public key)和私钥(private key)
image.png

场景分析

  1. 打开chrome
  2. 输入www.toutiao.com3
  3. 打开控制台
  • 右键->检查
  • F12
  1. 切换到network
  • 静态资源
  • 登陆

静态资源

静态资源方案:缓存+CDN+文件名hash

  • CDN : Content DeliveryNetwork
  • 通过用户就近性和服务器负载的判断,CDN确保内容以—种极为高效的方式为用户的请求提供服务

登录

表单登录

跨域解决方案

  • CORS
  • 代理服务器
    • 同源策略是浏览器的安全策略,不是HTTP的
  • lframe
    • 诸多不便
image.png 在vue开发过程中我们一般会使用dev-server来解决跨域问题,而在生产环境中,我们通常会使用Nginx的正向代理或是反向代理来解决跨域问题
  1. 向什么地址做了什么动作?
  • 使用POST方法
  • 目标域名https : //sso.toutiao.com目标path /quick_login/v2/
  1. 携带了哪些信息,返回了哪些信息
  • 携带信息
    • Post body,数据格式为form·希望获取的数据格式为json·已有的cookie
  • 返回信息
    • 数据格式json
    • 种cookie的信息

鉴权

在鉴权环节,一般都会使用Session+Cookie或是JWT来实现鉴权

  • Session+Cookie

image.png

  • JWT

image.png

实战-浏览器篇

AJAX有几种封装方法

  • XHR(XMLHttpRequest)

image.png

  • Fetch

    • XMLHttpRequet的升级版使用Promise
    • 模块化设计, Response,Request,Header对象
    • 通过数据流处理对象,支持分块读取
  • Node中的标准库 HTTP/HTTPS

    • 默认模块,无需安装其他依赖
    • 功能有限/不是十分友好
  • Axios

    • 支持浏览器、nodejs环境
    • 丰富的拦截器

网路优化

image.png

稳定性

image.png

扩展-通信方式

WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 典型场景︰实时性要求高,例如聊天室
  • URL使用ws://wss:// 等开头