当前位置: 首页 > news >正文

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 常见的请求体格式
请求格式格式描述
表单数据(Form Data)使用HTTP POST方法时,可以将表单数据包含在请求体中。请求体的格式类似于"key1=value1&key2=value2"的键值对形式,多个键值对之间使用"&"符号连接。
JSON数据使用HTTP POST或PUT方法时,可以将JSON格式的数据包含在请求体中。请求体的内容为JSON字符串,需要设置请求头的Content-Type为"application/json"
文件上传(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请求交互基础(基于GPT3.5,持续更新)

HTTP交互基础 目的HTTP定义详解HTTP协议(规范)1. 主要组成部分1.1 请求行(Request Line):包含请求方法、请求URI(Uniform Resource Identifier)和HTTP协议版本。1.2 请求头部(Reques…...

小谈设计模式(6)—依赖倒转原则

小谈设计模式(6)—依赖倒转原则 专栏介绍专栏地址专栏介绍 依赖倒转原则核心思想关键点分析abc 优缺点分析优点降低模块间的耦合度提高代码的可扩展性便于进行单元测试 缺点增加代码的复杂性需要额外的设计和开发工作 Java代码实现示例分析 总结 专栏介绍…...

JetBrains常用插件

Codota AI Autocomplete Java and JavaScript:自动补全插件 Background Image plus:背景图片设置 rainbow brackets:彩虹括号,便于识别 CodeGlance2: 类似于 Sublime 中的代码缩略图(代码小地图&#xff…...

【C++哈希应用】位图、布隆过滤器

【C哈希应用】位图、布隆过滤器 目录 【C哈希应用】位图、布隆过滤器位图概念位图的实现位图改造位图应用总结布隆过滤器布隆过滤器的提出布隆过滤器的概念布隆过滤器的查找布隆过滤器删除布隆过滤器优点布隆过滤器缺陷 作者:爱写代码的刚子 时间:2023.9…...

Qt 编译纯c的C99的项目, error: undefined reference to `f()‘

把Cpp的后缀该为C是什么样的 尝试引用一个奇门排盘的c程序,在git上找到的叫cqm, 然后总是报错 error: undefined reference to f() 很是郁闷 于是新建了个项目试验一下,终于摸清了需要命名空间。 后来这么写就可以了 a.h namespace XX …...

TensorFlow入门(五、指定GPU运算)

一般情况下,下载的TensorFlow版本如果是GPU版本,在运行过程中TensorFlow能自动检测。如果检测到GPU,TensorFlow会默认利用找到的第一个GPU来执行操作。如果机器上有超过一个可用的GPU,除第一个之外的其他GPU默认是不参与计算的。如果想让TensorFlow使用这些GPU执行操作,需要将运…...

Unity - 实践: Metallic流程贴图 转 Specular流程贴图

文章目录 目的Metallic Flow - SP - 输出输出的 MRA (MGA) 贴图 Metallic->Specular (根据教程一步一步实践)1. Base color Metallic -> Diffuse2. Base color Metallic -> Specular3. Roughness -> Glossiness输出贴图,在 unity 中展示:M…...

第三章:最新版零基础学习 PYTHON 教程(第四节 - Python 运算符—Python 逻辑运算符及示例)

运算符用于对值和变量执行操作。这些是执行算术和逻辑计算的特殊符号。运算符运算的值称为操作数。 表中的内容逻辑运算符 逻辑与运算符 逻辑或运算符 逻辑非运算符 逻辑运算符的求值顺序 逻辑运算符 在 Python 中,逻辑运算符用于条件语句(True 或 False)。它们执行逻辑 AN…...

如何做好测试?(三)功能测试 (Functional Testing, FT)

1. 功能测试的详细介绍: 功能测试 (Functional Testing, FT),是一种软件测试方法,旨在验证系统的功能是否按照需求规格说明书或用户期望的方式正常工作。它关注系统的整体行为,以确保各个功能模块和组件之间的交互和集成正确。 …...

Ubuntu-Server-22.04安装桌面+VNC

前提:Ubuntu Server安装好后,ubantu其他版本是否适用这里未知,欢迎大佬们前来评论 一、默认没有图形界面,有时觉得用图形界面操作更简单直接,于是用如下命令安装: 1.更新本地环境 sudo apt-get update s…...

职业规划,什么是职业兴趣 - 我喜欢做什么?

能够在工作岗位上面做出成绩的人,都是结合自身兴趣,对职业进行合理规划的那一类。尤其是步入中年以后,能够创造出巨大价值的人,无一例外都是喜欢自己职业的人。没有将兴趣融入工作的人,只能够忍受默默无闻地活着&#…...

基于Java的高校学生党员发展流程管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

【NLP的python库(03/4) 】: 全面概述

一、说明 Python 对自然语言处理库有丰富的支持。从文本处理、标记化文本并确定其引理开始,到句法分析、解析文本并分配句法角色,再到语义处理,例如识别命名实体、情感分析和文档分类,一切都由至少一个库提供。那么,你…...

面试理论篇三

关于异常机制篇 异常描述 目录 关于异常机制篇异常描述 注:自用 1,Java中的异常分为哪几类?各自的特点是什么? Java中的异常 可以分为 可查异常(Checked Exception)、运行时异常(Runtime Exception) 和 错误(Error)三类。可查异…...

ShardingSphere|shardingJDBC - 在使用数据分片功能情况下无法配置读写分离

问题场景: 最近在学习ShardingSphere,跟着教程一步步做shardingJDBC,但是想在开启数据分片的时候还能使用读写分离,一直失败,开始是一直能读写分离,但是分偏见规则感觉不生效,一直好像是走不进去…...

char s1[len + 1]; 报错说需要常量?

在C中,字符数组的大小必须是常量表达式,不能使用变量 len 作为数组大小。为了解决这个问题,你可以使用 new 运算符动态分配字符数组的内存,但在使用完后需要手动释放。 还有啥是只能这样的,还是说所有的动态都需要new&…...

【Linux】CentOS-6.8超详细安装教程

文章目录 1.CentOS介绍:2.必要准备:3.创建虚拟机:4 .安装系统 1.CentOS介绍: CentOS是一种基于开放源代码的Linux操作系统,它以其稳定性、安全性和可靠性而闻名,它有以下特点: 开源性&#xff1…...

【Java 进阶篇】MySQL启动与关闭、目录结构以及 SQL 相关概念

MySQL 服务启动与关闭 MySQL是一个常用的关系型数据库管理系统,通过启动和关闭MySQL服务,可以控制数据库的运行状态。本节将介绍如何在Windows和Linux系统上启动和关闭MySQL服务。 在Windows上启动和关闭MySQL服务 启动MySQL服务 在Windows上&#x…...

Android 11.0 mt6771新增分区功能实现一

1.前言 在11.0的系统开发中,在对某些特殊模块中关于数据的存储方面等需要新增分区来保存, 所以就需要在系统分区新增分区,接下来就来实现这个功能 2.mt6771新增分区功能实现一的核心类 build/make/core/Makefile build/make/core/board_config.mk build/make/core/config…...

LiveData简单使用

1.LiveData是基于观察者模式,可以用于处理消息的订阅分发的组件。 LiveData组件有以下特性: 1) 可以感知Activity、Fragment生命周期变化,因为他把自己注册成LifecycleObserver。 2) LiveData可以注册多个观察者,只有数据…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

【C++进阶篇】智能指针

C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...