HTTP请求交互基础(基于GPT3.5,持续更新)

HTTP交互基础

  • 目的
    • HTTP定义
    • 详解HTTP协议(规范)
      • 1. 主要组成部分
        • 1.1 请求行(Request Line):包含请求方法、请求URI(Uniform Resource Identifier)和HTTP协议版本。
        • 1.2 请求头部(Request Headers):在请求中,客户端可以通过请求头部携带额外的信息给服务器。请求头部包含了一系列的字段,用于描述请求的附加信息,例如用户代理、内容类型、授权信息等。
          • 1.2.1 头部Header中,常见的几个字段
          • 1.2.2 头部字段 Content-Type 常见媒体类型扩展
        • 1.3 请求体(Request Body)某些请求方法,如 POST 或 PUT,可以在请求体中携带数据。请求体一般用于向服务器提交表单数据、上传文件等。
          • 1.3.1 常见的请求体格式
          • 1.3.2 POST 扩展 前后端常见问题
            • 1. 传文件加其他参数
            • 2. 只传参数
      • 三级目录

目的

对前端交互相关请求,协议缺乏稳固的基础知识,gpt正好适合问基础知识,通过询问gpt3.5进行学习,写一篇笔记补充补充

HTTP定义

  1. 什么是HTTP?
    • Http全称(HyperText Transfer Protocol)超文本传输协议 超文本:是一种通过链接将相关信息组织起来的非线性文本形式。它通过超链接连接不同的文本或资源,使得用户可以在阅读过程中自由地跳转和浏览相关内容,提供更加丰富和智能化的阅读体验。
    • 是一种用于客户端和服务器之间传输数据的应用层协议。协议就是一种规范

详解HTTP协议(规范)

1. 主要组成部分

1.1 请求行(Request Line):包含请求方法、请求URI(Uniform Resource Identifier)和HTTP协议版本。
  • 请求方法:HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,在RESTful架构中常用的是POST、GET、PUT、DELETE
请求方法作用于
POST常用于新增
GET常用于查询
PUT常用于编辑
DELETE常用于删除
  • URI 统一资源标识符号(Uniform Resource Identifier),URI包括两种类型:URL和URN。
类型描述
URL(Uniform Resource Locator)URL是URI的一种,它指定了互联网上的资源的位置以及访问该资源的方式。换句话说,URL是访问Web页面或其他Web资源的地址,它由协议、主机名、路径等部分组成。举个例子,http://www.example.com/index.html就是一个URL。
URN(Uniform Resource Name)URN也是URI的一种,它与URL不同的是,URN仅仅是为一个资源分配一个唯一的名字,不涉及定位资源的具体位置。URN作为一个名字,可以持久的指向一个特定的资源,无论它被移动到哪个位置。URN还没有被广泛使用,目前只在某些特定的场景下使用,如在元数据中引用资源。
1.2 请求头部(Request Headers):在请求中,客户端可以通过请求头部携带额外的信息给服务器。请求头部包含了一系列的字段,用于描述请求的附加信息,例如用户代理、内容类型、授权信息等。
1.2.1 头部Header中,常见的几个字段
字段描述
Content-Type指定请求体的媒体类型,如application/json、application/x-www-form-urlencoded等
Content-Length指定请求体的长度,以字节为单位
User-Agent标识发出请求的客户端应用程序或浏览器的用户代理信息
Accept指定客户端能够接受的响应内容类型
Authorization包含用于进行身份验证的凭证信息,比如Bearer令牌、基本认证凭据等。
Cookie包含来自服务器的应答Cookie值,客户端将这些值存储并在每次请求中发送回服务器
Referer表示当前请求是从哪个URL页面跳转过来的,用于记录请求的来源
If-Modified-Since用于条件性GET请求,指定自某个日期/时间以来是否有更新的资源可用。
Cache-Control控制缓存行为的指令,如max-age、no-cache、private等。
X-Requested-With标识该请求是由Ajax发起的,常用于区分普通请求和异步请求。
TODO 待补充
1.2.2 头部字段 Content-Type 常见媒体类型扩展
媒体类型类型描述
application/jsonJSON 格式的数据
application/xmlXML 格式的数据
application/octet-stream二进制流数据,通常用于文件上传或下载
text/plain纯文本数据,不包含任何格式或特殊字符
text/htmlHTML 格式的数据,通常用于网页内容
multipart/form-data用于表单提交,可以包含多种不同类型的数据,比如文件、文本等。
application/x-www-form-urlencoded经过 URL 编码的表单数据
application/pdfPDF 格式的文档
image/jpeg 或 image/pngJPEG 或 PNG 格式的图片
audio/mpeg 或 audio/oggMPEG 或 OGG 音频文件
Access-Control-Expose-Headers 该字段值为一个以逗号分隔的名称列表,用于明确告知客户端可以访问的响应头字段名称。例如:Access-Control-Expose-Headers: Content-Type, X-Custom-Header

关于 Access-Control-Expose-Headers: 默认情况下,浏览器可以访问以下响应头字段:

  • 当客户端向服务器发送HTTP请求时,以下是一些常见的可以被访问到的HTTP请求头字段:

    Accept:指定客户端能够处理的媒体类型(MIME类型)。
    Accept-Encoding:指定客户端能够处理的内容编码方式,如gzip、deflate等。
    Accept-Language:指定客户端首选的自然语言,用于响应内容的国际化。
    User-Agent:包含了发起请求的用户代理信息,通常标识了浏览器或其他客户端应用程序。
    Host:指定目标服务器的主机名和端口号。
    Cookie:指定之前由服务器设置的Cookie值,用于跟踪会话状态。
    Authorization:用于进行身份验证的凭证信息,如基本认证、Bearer令牌等。

  • 在服务器响应中,以下是一些常见的可以被访问到的HTTP响应头字段:

    Content-Type:指定响应正文的媒体类型。
    Content-Length:指定响应正文的字节长度。
    Cache-Control:控制缓存行为,如max-age、no-cache等指令。
    Expires:指定响应的过期时间。
    Last-Modified:指示资源的最后修改时间。
    Set-Cookie:设置Cookie值,用于跟踪会话状态。
    Access-Control-Allow-Origin:指示允许访问资源的来源,用于CORS跨域请求。
    Location:指定重定向的URL地址。

1.3 请求体(Request Body)某些请求方法,如 POST 或 PUT,可以在请求体中携带数据。请求体一般用于向服务器提交表单数据、上传文件等。
1.3.1 常见的请求体格式
请求格式格式描述
Content-Type:application/x-www-form-urlencoded)使用HTTP POST方法时,可以将表单数据包含在请求体中。请求体的格式类似于"key1=value1&key2=value2"的键值对形式,多个键值对之间使用"&"符号连接。
Content-Type:application/json使用HTTP POST或PUT方法时,可以将JSON格式的数据包含在请求体中。请求体的内容为JSON字符串,需要设置请求头的Content-Type为"application/json"
Content-Type:multipart/form-data使用HTTP POST方法进行文件上传时,可以将文件及相关信息打包放入请求体中。这种格式一般用于上传文件,请求体以多部分(multipart)的形式组织,并使用boundary分隔每个部分
原始数据(Raw Data)也可以直接将原始数据以字符串的形式放入请求体中,无论是纯文本还是其他格式的数据。需要根据实际情况设置请求头的Content-Type。
1.3.2 POST 扩展 前后端常见问题
1. 传文件加其他参数
  • Content-Type 使用 multipart/form-data
    • 将表单数据按照多部分的格式进行编码。每个字段都会被封装成一个单独的部分,可以包含普通文本字段和文件上传字段。这种编码方式适用于需要上传文件的场景。
2. 只传参数
  • Content-Type 使用 application/x-www-form-urlencoded
    • 将表单数据按照URL参数的方式进行编码。所有字段名和字段值都会被URL编码,并使用&符号连接。这种编码方式适用于只传输普通文本字段的场景。

三级目录

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

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

相关文章

北大硕士7年嵌入式学习经验分享

阶段 1 大一到大三这个阶段我与大多数学生相同: 学习本专业知识(EE专业),学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等)&#xff0c…

常见web信息泄露

一、源码(备份文件)泄露 1、git泄露 Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除&#xff…

SpringBoot 中使用JPA

最近忙里偷闲,想写一点关于JPA的东西,另外也加深下对JPA的理解,才有了此篇博文。 一、JPA JPA (Java Persistence API)Java持久化API,是一套Sun公司Java官方制定的ORM 规范(sun公司并没有实现…

mfc140u.dll是什么文件?mfc140u放在哪个文件夹?详细修复教程

今天我想和大家分享一个非常常见的问题——mfc140u.dll丢失的困扰以及解决方法。 首先,让我们来了解一下什么是mfc140u.dll。这是一个非常重要的动态链接库文件,它是Microsoft Foundation Class Library的一个组件。许多软件和游戏都需要这个文件的支持才…

github搜索技巧

指定语言 language:java 比如我要找用java写的含有blog的内容 搜索项目名称包含关键词的内容 vue in:name 其他如项目描述跟项目文档,如下 组合使用 vue in:name,description,readme 根据Star 或者fork的数量来查找 总结 springboot vue stars:>1000 p…

(三)激光线扫描-中心线提取

光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素。 1. 光条的高斯分布 激光线条和打手电筒一样,中间最亮,越像周围延申,光强越弱,这个规则符合高斯分布,如下图。 2. 传统光条纹中心提取算法 传统的光条纹中心提取算法有 灰度重心法、…

漏洞扫描环境:win10系统用VMware Workstation打开虚拟机若干问题

win10系统用VMware Workstation打开虚拟机若干问题 一 .VMware打开虚拟机就蓝屏重启怎么解决?一. VMware打开虚拟机就蓝屏重启怎么解决?方法一:1、同时按下CTRLSHIFTESC打开任务管理器功能,之后依次点击-详细信息-性能后出现下列界…

苹果双系统和虚拟机哪个好用?

苹果不能直接使用windows系统中的软件,但windows系统较为全面,为了解决苹果电脑不能使用windows系统软件的问题,使用双系统和类虚拟机是非常不错的解决方案。那么,苹果双系统和虚拟机哪个好?这两种解决方案各有千秋。苹…

ubuntu18.04 OpenGL开发(显示YUV)

源码参考:https://download.csdn.net/download/weixin_55163060/88382816 安装opengl库 sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev 安装opengl工具包 sudo apt install mesa-utils 检查opengl版本信息(桌面终端执行&#xff09…

ubuntu 18.04 LTS安装opencv 3.4.16 + opencv_contrib 3.4.16

1.下载 opencv 3.4.16 opencv_contrib 3.4.16 其中,opencv_contrib解压后的多个文件夹复制到opencv内、合并 2.安装 参考博文: https://zhuanlan.zhihu.com/p/650792342 https://zhuanlan.zhihu.com/p/87197806 其中 (1)cmake前…

【AI视野·今日Sound 声学论文速览 第十七期】Tue, 3 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 3 Oct 2023 Totally 15 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers DiffAR: Denoising Diffusion Autoregressive Model for Raw Speech Waveform Generation Authors Roi Benita, Michael Elad, Joseph Kes…

大数据-玩转数据-Flink 海量数据实时去重

一、海量数据实时去重说明 借助redis的Set,需要频繁连接Redis,如果数据量过大, 对redis的内存也是一种压力;使用Flink的MapState,如果数据量过大, 状态后端最好选择 RocksDBStateBackend; 使用布隆过滤器,…

结构型设计模式——桥接模式

摘要 桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。 一、桥接模式的意图 将抽象与实现分离开来,使它们可以独立变化。 二、桥接模式的类图 Abstraction: 定义抽象类的接口Implementor: 定义实现类接口 …

【Pytorch笔记】4.梯度计算

深度之眼官方账号 - 01-04-mp4-计算图与动态图机制 前置知识:计算图 可以参考我的笔记: 【学习笔记】计算机视觉与深度学习(2.全连接神经网络) 计算图 以这棵计算图为例。这个计算图中,叶子节点为x和w。 import torchw torch.tensor([1.]…

使用关键字interface来声明使用接口-PHP8知识详解

继承特性简化了对象、类的创建,增加了代码的可重用性。但是php8只支持单继承,如果想实现多继承,就需要使用接口。PHP8可以实现多个接口。 接口类通过关键字interface来声明,接口中不能声明变量,只能使用关键字const声明…

机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法

机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法 往期回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化…

stm32 - 中断

stm32 - 中断 概念中断向量表NVIC 嵌套中断向量控制器优先级 中断EXTI概念基本结构例子- 对射式红外传感器计次例子 - 旋转编码器 概念 stm32 支持的中断资源(都属于外设) EXTITIMADCUSARtSPII2C stm32支持的中断 内核中断 外设中断 中断通道与优先级 一…

C# 读取Execl文件3种方法

方法 1,使用OLEDB可以对excel文件进行读取 1.1C#提供的数据连接有哪些 对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。 Connection类有四…

【Linux】线程池

目录 一、线程池1.什么是线程池2.线程池图解3.实现代码 二、单例模式1.单例模式的概念2.饿汉方式实现单例模式3.懒汉方式实现单例模式4.懒汉方式实现单例模式的线程池 一、线程池 1.什么是线程池 线程虽然比进程轻量了很多,但是每创建一个线程时,需要向…

UCOS的任务创建和删除

一、任务创建和删除的API函数 1、任务创建和删除本质就是调用uC/OS的函数 API函数 描述 OSTaskCreate() 创建任务 OSTaskDel() 删除任务 注意: 1,使用OSTaskCreate() 创建任务,任务的任务控制块以及任务栈空间所需的内存&#xff0c…