前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP笔记

HTTP笔记

作者头像
赤蓝紫
发布2023-01-02 16:27:52
3760
发布2023-01-02 16:27:52
举报
文章被收录于专栏:clzclz

HTTP 笔记

参加字节跳动的青训营时写的笔记。这部分是杨超男老师讲的课。

1. 简介

  • 超文本协议(Hyper Text Transfer Protocol)

特点

  • 应用层协议,基于 TCP 协议
  • 请求响应:遵循客户端-服务端模型,客户端打开一个连接发出请求,然后等待服务器响应
  • 简单可扩展
  • 无状态

2. 发展

image-20220120171110994
image-20220120171110994

3. 请求方法

方法

解释

GET

请求一个指定资源的表示形式,用于获取数据

POST

用于将实体提交到指定的资源。会导致在服务器上的状态变化或副作用

PUT

对服务器的数据进行修改。与 POST 方法的区别是 POST 方法侧重于数据的增加,而 PUT 方法侧重于数据的修改

DELETE

删除指定的资源

HEAD

类似 GET,不过没有响应体

CONNECT

建立一个由目标资源标识地服务器的隧道

OPTIONS

用于描述目标资源的通信选项(比如预请求允不允许跨域请求跨域请求)

TRACE

沿着到目标资源的路径执行一个消息环回测试,主要用于测试

PATCH

对资源应用部分修改

  • 安全:不会修改服务器的数据的方法
    • GET
    • HEAD
    • OPTIONS
  • 幂等:同样的请求被执行一次与连续执行多次的效果一样,服务器的状态也一样。所有安全的请求方法都是幂等的。
    • GET
    • HEAD
    • OPTIONS
    • PUT
    • DELETE

4. 状态码

状态码

解释

1xx

指示信息。表示请求已接收,继续处理

2xx

成功。表示请求已被成功接收、理解、接受

3xx

重定向。表示要完成请求必须进行更进一步的操作

4xx

客户端错误。表示请求有语法错误或请求无法实现

5xx

服务器错误。表示服务器处理请求时发生内部错误

5. 报文

示例:

image-20220120171634175
image-20220120171634175

5.1 请求报文

  • 请求行:说明请求类型、要访问的资源以及 HTTP 版本
  • 请求头:说明服务器要使用的信息,如 HOST 表示请求的主机名,User-Agent 表示 请求的浏览器类型等
  • 空行:必须,即使请求数据为空,也必须要有空行。空行的作用是用来通知服务器 请求头已经结束,接下来是请求数据部分
  • 请求数据:请求数据是在 POST 方法中使用,而不是在 GET 方法中使用,因为 GET 方法的请求数据在 URL 中。

5.2 响应报文

  • 状态行:由 HTTP 协议版本号、状态码、状态消息三部分组成
  • 响应头:说明客户端要使用的信息,如 Date 表示生成响应报文的日期和时间,Content-Type 表示返回的内容的内容类型以及编码类型
  • 空行:必须,即使响应报文主体为空,也必须要有空行。空行的作用是用来通知客户端响应头已经结束,接下来是响应正文部分
  • 响应正文:服务器返回给客户端的文本信息

5.3 常用请求头

image-20220120180206746
image-20220120180206746

5.4 常用响应头

image-20220120180305049
image-20220120180305049

5.5 缓存

  • 强缓存
    • Expires
    • Cache-Control:可缓存性
      • no-cache:协商缓存验证
      • no-store:不使用任何缓存
    • max-age:到期。单位是秒,存储的最大周期
    • must-revalidate:重新验证、重新加载。一旦资源过期,在成功向原始服务器验证之前,不能使用
  • 协商缓存
    • ETag/If-None-Match:资源特定版本的标识符
    • Last-Modified/If-Modified-Since:最后修改时间
image-20220120210942019
image-20220120210942019

5.6 Cookie

image-20220120210132326
image-20220120210132326

6. 发展

6.1 HTTP/2

更快、更稳定、更简单

  • HTTP/2 连接都是永久的,每个来源只需一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制
  • 服务器推送(可选):收到 html 后,里面用到的 css、js 可以在客户端发送请求前主动推送给客户端(预判)

6.2 HTTPS

经过 TSL/SSL 加密

  • HTTPS:默认端口 443
  • HTTP:默认端口 80

7. RESTful API

image-20220120175816312
image-20220120175816312

8. 场景

8.1 跨域

  • CORS:先发送预请求,查看服务器是否允许该跨域请求
image-20220120212928435
image-20220120212928435

相关协议头

image-20220120213000877
image-20220120213000877
  • 代理服务器:原理:同源策略是浏览器的安全策略,不是 HTTP 的
image-20220118155230783
image-20220118155230783

8.2 登录

image-20220120212010182
image-20220120212010182

9. 优化

image-20220120212241150
image-20220120212241150
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTP 笔记
    • 1. 简介
      • 2. 发展
        • 3. 请求方法
          • 4. 状态码
            • 5. 报文
              • 5.1 请求报文
              • 5.2 响应报文
              • 5.3 常用请求头
              • 5.4 常用响应头
              • 5.5 缓存
              • 5.6 Cookie
            • 6. 发展
              • 6.1 HTTP/2
              • 6.2 HTTPS
            • 7. RESTful API
              • 8. 场景
                • 8.1 跨域
                • 8.2 登录
              • 9. 优化
              相关产品与服务
              Serverless HTTP 服务
              Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com