网络协议-HTTP协议详情讲解

news2025/3/13 6:55:42

目录

HTTP协议内容和方法

HTTP请求常见请求头

 HTTP常见返回头

HTTP协议基本方法

常见HTTP状态码

面试解惑:301 vs 308

面试解惑:302 / 303 / 307

常见HTTP头

User-Agent

Content-Type

Origin

Accept

Referer

Connection


HTTP协议内容和方法

HTTP请求常见请求头

 HTTP常见返回头

  

HTTP协议基本方法

GET:从服务器获取资源

POST:在服务器创建资源

PUT:在服务器修改资源(幂等性)(同一个请求多次调用产生的是一个结果)

DELETE:在服务器删除资源

其他方法

OPTIONL:跨域部分讲解

TRACE:用于显示调试信息(多数网站不支持,因为会泄露调试信息,追溯整个HTTP请求的链路)

CONNECT:代理部分讲解

PATCH:对资源进行部分更新(极少用)

常见HTTP状态码

  • 1xx:提供信息
  • 100 continue
  • 101切换协议(switch protocol)

  • 2xx:成功
  • 200 - OK
  • 201 - Created 已创建
  • 202 - Accepted 已接收
  • 203 - Non-Authoritative Information 非权威内容(代理方在-中间被修改过)
  • 204 - No Content 没有内容
  • 205 - Reset Content 重置内容
  • 206 - Partial Content 服务器下发了部分内容(range header)
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论
  • 3xx:重定向
  • 300 - Multiple Choices用户请求了多个选项的资源(返回选项列表)
  • 301 - Moved Permanently 永久转移
  • 302 - Found资源被找到(以前是临时转移)
  • 303 - See Other 可以使用GET方法在另一个URL找到资源(302拆分得到)
  • 304 - Not Modified hash没有修改 (缓存部分特别说明)
  • 305 - Use Proxy 需要代理
  • 307 - Temporary Redirect 临时重定向(302拆分得到)
  • 308 - Permanent Tedirect 永久重定向
  • 4xx:客户端错误
  • 400 - Bad Request 请求格式错误
  • 401 - Unauthorized 没有授权,(跳登录)
  • 402 - Payment Required 请先付费(跳到支付方法)
  • 403 - Forbidden 禁止访问 (联系管理员,看看是否改为允许访问)
  • 404 - Not Found 没有找到
  • 405 - Method Not Allowed 方法不被允许
  • 406 - Not Acceptable 服务端可以提供的内容和客户端期待的不一样
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论
  • 5xx:服务端错误
  • 500 - Internal Server Error (内部服务器错误)
  • 501 - Not Implemented (没有实现)(有这个接口,但是还没写完)
  • 502 - Bad Gateway (网关错误)
  • 503 - Service Unavailable (服务不可用)
  • 504 - Gateway Timeout (网关超时)
  • 505 - HTTP Version Not Supported (版本不支持)
  • 注:多数服务端开发已经不遵循状态码,我们在restful部分讨论

面试解惑:301 vs 308

共同点:资源被永久移动到新的地址

差异:

  1. 客户端收到308请求后,之前是什么method,那么之后也会延用这个method(POST/GET/PUT)到新地址
  2. 客户端收到301请求后,通常用户会向新地址发起GET请求

面试解惑:302 / 303 / 307

共同点:

  1. 资源临时放到新地址(请不要缓存)

差异:

  1. 302是http1.0提出的,最早叫做Moved Temporarily;很多浏览器实现的时候没有遵照标准,把所有请求都重定向为GET
  2. 1999年标准委员会增加了303和307,并将302重新定义为Found。
  3. 303告诉客户端使用GET方法重定向资源
  4. 307告诉客户端使用原请求的method重定向资源

常见HTTP头

Content-Length

发送给接收者的Body内容长度(字节)

  • 一个byte是8bit
  • Utf-8编码的字符1-4个字节

User-Agent

帮助区分客户端特性的字符串

  • 操作系统
  • 浏览器
  • 制造商(手机类型等)
  • 内核类型
  • 版本号......

Content-Type

帮助区分资源的媒体类型(Media Type/MIME Type)

  • text/html
  • text/css
  • application/json
  • image/jpeg
  • ......

Origin

描述请求来源地址

  • scheme://host:port
  • 不含路径
  • 可以是null

Accept

建议服务端返回何种媒体类型(MIME Type)

  • */*代表所有类型(默认)
  • 多个类型用逗号隔开,例如:text/html,application/json

Accept-Encoding:建议服务端发送哪种编码(压缩算法)

  • deflate,gzip;q=1.0,*;q=0.5

Accept-Language:建议服务端传递哪种语言

  • Accept-Language:fr-CH,fr;q=0.9,en;q=0.8,de;q=0.7,*;q=0.5

Referer

告诉服务端打开当前页面的上一张页面的URL;如果是ajax请求,那么就告诉服务端发送请求的URL是什么(当前页面网址)

  • 非浏览器环境有时候不发生Referer(或者虚拟Referer,通常是爬虫)
  • 常常用于用户行为分析

Connection

决定连接是否在当前事务完成后关闭

  • Http1.0默认是close
  • Http1.1后默认是keep-alive

思考讨论:

思考平时工作中前端和服务端有没有遵循HTTP协议规范?

HTTP协议相关代理/安全/缓存/跨域等重点内容见后续文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx中location规则 与 URL重写(rewrite)详解

1.Nginx中location与rewrite 1.1 location与rewrite常用的正则表达式 符号作用^匹配输入字符串的起始位置$ 匹配输入字符串的结束位置*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”…

微信为什么使用 SQLite 保存聊天记录

SQLite “只是”一个库,它不是传统意义上的服务器。因此,在某些场合下,它确实不合适。但是,在相当多的其他场合,它却是最合适的选择。SQLite 号称是部署和使用最广泛的数据库引擎。我认为这很有可能,因为 S…

《PyTorch 深度学习实践》第10讲 卷积神经网络(基础篇)

文章目录1 卷积层1.1 torch.nn.Conv2d相关参数1.2 填充:padding1.3 步长:stride2 最大池化层3 手写数字识别该专栏内容为对该视频的学习记录:【《PyTorch深度学习实践》完结合集】 专栏的全部代码、数据集和课件全放在个人GitHub了&#xff…

SpringCloud之OpenFeign介绍案例+相关面试题

概述 OpenFeign是一个声明式的WEB服务客户端,它使WEB服务客户端变得更加容易。具有可插拔的注解支持,SpringCloud中添加了SpringMVC注解的支持。SpringCloud中集成了Ribbon和Eureka,以及SpringCloud LoadBalance,以便在使用Feign时…

C++数据结构:树

树 树是一种数据结构,它是n(n>0)个节点的有限集。n0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。 根 有且仅有一个结点的非空树,那个结点就是根。 A就是上面树的根节点 子树 在一棵非空树中,除根外&a…

由浅入深,一文彻底搞懂Mybatis+面试题分享

mybatis常见面试题链接:2023年-Mybatis常见面试题_是Smoky呢的博客-CSDN博客 MVC架构模式和三层架构 在说Mybatis之前,需要知道MVC架构模式和三层架构的这种思想 MVC架构模式 M:Model,数据层。都是和数据相关,比如实体…

MongoDB实现---事务机制

事务机制 原子性是MongoDB实现事务的难点,隔离性和持久性则是MongoDB事务机制的亮点 ACID支持:由于前面说过MongoDB是基于大数据、提供高度可扩展和高可用;所以其事务机制不仅仅是一般ACID还是结合了BASE理论下的ACID 原子性:保…

键盘录入及标识符

键盘录入 键盘录入介绍: ●为什么要有键盘录入? 目的:为了让我们操作的数据,变得更加灵活 举例:int a10; 这里a虽然是个变量,但记录的值,却是手动写死的。 提问:能不能让a变量记录的值,灵活…

Elasticsearch-mapping

1.Mapping基本概念 Mapping 也称之为映射,定义了 ES 的索引结构、字段类型、分词器等属性,是索引必不可少的组成部分。 ES 中的 mapping 有点类似与RDB中“表结构”的概念,在 MySQL 中,表结构里包含了字段名称,字段的…

# IMAGE - Image Perimeters

# IMAGE - Image Perimeters ## 题面翻译 ### 描述 给出一张由"x"和"."组成的矩阵。每个"x"可以向上下左右及两个斜对角进行连通,请问由某个点开始的"x",它所连通的图形的周长为多少。 ### 输入 整个测试有多…

SpringBoot 整合ChatGPT API项目实战

准备工作 (1)已成功注册 OpenAI 的账号。 (2)创建 API KEY,这个 API KEY 是用于 HTTP 请求身份验证的,可以创建多个。 注意这个创建之后需要马上复制好保存,关闭弹框之后就看不到了。 &#xf…

excel的导入导出的两种方案 (1 EasyExcel 2 Hutool工具类)

文章目录 前言1 EasyExcel的导入导出导出1 导入依赖2 项目中的CourseEntity实体类3 CoureseVo VO类 (对CourseEntity进行EasyExcel导入导出操作)4 导出代码的编写 并最终测试导出效果5 (前端内容 可选)通过vue按钮点击 导出 导入1 导入依赖 跟导出相同2 创建回调监听器3 编写导…

1、Typescript基础入门与环境搭建

1、开发工具安装与基本配置 1.1、软件下载安装 如果你还没有使用过VSCode,当然先要去官网下载了。下载完成后双击安装,一直下一步即可。 1.2、编辑器汉化 如果你英语不是很好,配置中文版界面是很有必要的,安装个插件就可以了。打…

虚化背景 - 基于镜头模糊滤镜的深度映射

镜头模糊 Lens Blur等滤镜可以使用深度映射 Depth Map来设置像素在视觉上的前后关系。因此,常利用深度映射来创建真实感虚化效果,或者进行超越镜头的任意虚化处理。 ◆ ◆ ◆ 基于 Alpha 通道的深度映射关系 一般可通过建立 Alpha 通道或图层蒙版来创建…

【算法基础】DP第三弹 —— 竞赛篇

一、计数问题 (一)Question 1. 问题描述 2. Input 输入包含多组测试数据。每组测试数据占一行,包含两个整数 a 和 b。当读入一行为 0 0 时,表示输入终止,且该行不作处理。(0 < a, b < 100000000) 3. Output 每组数据输出一个结果,每个结果占一行。每个结果包…

MIPI D-PHYv2.5笔记(21) -- Forward High-Speed Data Transmission Timing

声明&#xff1a;作者是做嵌入式软件开发的&#xff0c;并非专业的硬件设计人员&#xff0c;笔记内容根据自己的经验和对协议的理解输出&#xff0c;肯定存在有些理解和翻译不到位的地方&#xff0c;有疑问请参考原始规范看 DDR时钟差分信号和Data差分信号的时序关系如下图所示…

计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

计算机网络简史

ARPANET的发展 互联网最早的雏形 1931-ARPANET设计 互联网名人堂 1965-packet switching(分包交换) 1969 第一个RFC(Request for Comments)(开始通过APPANET发布)第一个接口信息处理单元&#xff08;Interface Message Processor&#xff09;&#xff08;下图&#xff0c;节…

ChatGPT时代:我们可能站到了自然语言编程的大门口

ChatGPT大火&#xff0c;我现在有种感觉&#xff1a;我们可能站到了自然语言编程的门口&#xff0c;一脚下去&#xff0c;也许能把门踹开。 当然&#xff0c;也可能会踢到一块铁板。 回顾我们的编程之路&#xff0c;基本上就是一个编程门槛不断降低的历史。 最早的一批前辈们…

wireshark抓包工具的使用

前言 ①wireshark是非常流行的网络封包分析软件&#xff0c;功能十分强大。可以截取各种网络封包&#xff0c;显示网络封包的详细信息。 ②使用wireshark的人必须了解网络协议&#xff0c;否则就看不懂wireshark。 ③为了安全考虑&#xff0c;wireshark只能查看封包&#xff…