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

HTTP交互基础

  • 目的
    • HTTP定义
    • 详解HTTP协议(规范)
      • [1. 主要组成部分](#1. 主要组成部分)
        • [1.1 请求行(Request Line):包含请求方法、请求URI(Uniform Resource Identifier)和HTTP协议版本。](#1.1 请求行(Request Line):包含请求方法、请求URI(Uniform Resource Identifier)和HTTP协议版本。)
        • [1.2 请求头部(Request Headers):在请求中,客户端可以通过请求头部携带额外的信息给服务器。请求头部包含了一系列的字段,用于描述请求的附加信息,例如用户代理、内容类型、授权信息等。](#1.2 请求头部(Request Headers):在请求中,客户端可以通过请求头部携带额外的信息给服务器。请求头部包含了一系列的字段,用于描述请求的附加信息,例如用户代理、内容类型、授权信息等。)
          • [1.2.1 头部Header中,常见的几个字段](#1.2.1 头部Header中,常见的几个字段)
          • [1.2.2 头部字段 Content-Type 常见媒体类型扩展](#1.2.2 头部字段 Content-Type 常见媒体类型扩展)
        • [1.3 请求体(Request Body)某些请求方法,如 POST 或 PUT,可以在请求体中携带数据。请求体一般用于向服务器提交表单数据、上传文件等。](#1.3 请求体(Request Body)某些请求方法,如 POST 或 PUT,可以在请求体中携带数据。请求体一般用于向服务器提交表单数据、上传文件等。)
          • [1.3.1 常见的请求体格式](#1.3.1 常见的请求体格式)
          • [1.3.2 POST 扩展 前后端常见问题](#1.3.2 POST 扩展 前后端常见问题)
            • [1. 传文件加其他参数](#1. 传文件加其他参数)
            • [2. 只传参数](#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/json JSON 格式的数据
application/xml XML 格式的数据
application/octet-stream 二进制流数据,通常用于文件上传或下载
text/plain 纯文本数据,不包含任何格式或特殊字符
text/html HTML 格式的数据,通常用于网页内容
multipart/form-data 用于表单提交,可以包含多种不同类型的数据,比如文件、文本等。
application/x-www-form-urlencoded 经过 URL 编码的表单数据
application/pdf PDF 格式的文档
image/jpeg 或 image/png JPEG 或 PNG 格式的图片
audio/mpeg 或 audio/ogg MPEG 或 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编码,并使用&符号连接。这种编码方式适用于只传输普通文本字段的场景。

三级目录

相关推荐
AI大模型知识分享2 小时前
Prompt最佳实践|如何用参考文本让ChatGPT答案更精准?
人工智能·深度学习·机器学习·chatgpt·prompt·gpt-3
Karoku0666 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
掘根8 小时前
【网络】高级IO——poll版本TCP服务器
网络·数据库·sql·网络协议·tcp/ip·mysql·网络安全
友友马9 小时前
『 Linux 』HTTP(一)
linux·运维·服务器·网络·c++·tcp/ip·http
2401_872514979 小时前
深入探究HTTP网络协议栈:互联网通信的基石
网络·网络协议·http
清水白石0089 小时前
C++使用Socket编程实现一个简单的HTTP服务器
服务器·c++·http
不良人天码星10 小时前
HTTP 协议的基本格式
网络·网络协议·http
广东数字化转型12 小时前
SSL/TSL 总结
网络·网络协议·ssl
不烦下雨c13 小时前
【网络】传输层协议TCP
网络·网络协议·tcp/ip