HTTP概要

文章目录

  • 什么是HTTP?
  • URL的结构
  • 请求报文结构
    • 请求方法
      • GET
      • HEAD
      • POST
      • PUT
      • DELETE
      • TRACE
      • OPTIONS
      • CONNECT
      • PATCH
      • 解释
    • 请求头字段
  • 响应报文结构
    • 响应状态
    • 响应头字段
  • HTTP会话
    • 3次握手
    • 无状态协议

什么是HTTP?

HTTP,即Hypertext Transfer Protocol(超文本传输协议)

它是一个”请求-相应“的协议,用于客户端和服务器间交换信息

URL的结构

HTTP resources 通过URL来定位
URL,即 Uniform Resource Locators(统一资源定位符)

结构如下:
–scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

  • scheme, 方案
    • 指定用于访问资源的协议或方法
    • 如http, ftp, mailto, file, data, irc
  • 权限, 包括:
    • 身份验证部分(可选)
      • username
      • password
      • user:password@
    • host
      • registered name / IP address
      • 端口号(可选)
  • 路径
    • 资源在服务器上的相对路径
  • query, 可选的查询字符串
    • 包含资源的附加参数或信息
  • fragment(可选,片段标识符)
    • 指向资源的特定部分
    • #引入

例子: http://www.example.com/index.html

请求报文结构

# request line, 请求行
GET / HTTP/1.1

# request header fields, 请求头首部
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

# 一个空行

# 可选的消息主题

请求方法

HTTP定义了用于指示对特定资源执行的期望操作的方法。

GET

GET方法请求获取指定资源的表示。使用GET的请求应仅用于检索数据,不应产生其他影响。(幂等

HEAD

HEAD方法请求与GET请求相同的响应,但不包含响应体。(幂等

POST

POST方法请求服务器接受包含在请求中的实体作为URI标识的Web资源的新下级。

PUT

PUT方法请求将封装的实体存储在提供的URI下。(幂等

DELETE

DELETE方法删除指定的资源。(幂等

TRACE

TRACE方法回显接收到的请求,以便客户端可以查看中间服务器是否进行了哪些(如果有的话)更改或添加。(幂等

OPTIONS

OPTIONS方法返回服务器支持的指定URL的HTTP方法。这可用于通过请求’*'而不是特定资源来检查Web服务器的功能。(幂等

CONNECT

CONNECT方法将请求连接转换为透明的TCP/IP隧道,通常用于通过未加密的HTTP代理便于SSL加密通信(HTTPS)。

PATCH

PATCH方法对资源应用部分修改。

所有通用的HTTP服务器都要求至少实现GET和HEAD方法,并在可能的情况下也实现OPTIONS方法。

解释

一些方法(例如HEAD、GET、OPTIONS和TRACE)按照惯例被定义为“安全”,这意味着它们仅用于信息检索,不应改变服务器的状态。

PUT和DELETE方法被定义为“幂等”,这意味着多个相同的请求应具有与单个请求相同的效果,或者它返回的响应代码在后续请求中可能不同,但系统状态在每次都将保持相同。

由于HTTP是无状态协议,因此被规定为安全的GET、HEAD、OPTIONS和TRACE方法也应该是幂等的。

image.png

请求头字段

名称描述示例
Accept响应中可接受的媒体类型。Accept: text/html
Accept-Charset可接受的字符集。Accept-Charset: utf-8
Accept-Datetime可接受的时间版本。Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Accept-Encoding可接受的编码列表。Accept-Encoding: gzip, deflate
Accept-Language响应中可接受的人类语言列表。Accept-Language: en-US
Cache-Control用于指定在请求-响应链中所有缓存机制都必须遵守的指令。Cache-Control: no-cache
Connection当前连接的控制选项和逐跳请求字段的列表。不得与HTTP/2一起使用。Connection: keep-alive Connection: Upgrade
Content-Encoding数据使用的编码类型。Content-Encoding: gzip
Content-Length请求体的长度(以八位字节为单位)。Content-Length: 348
Content-Type请求体的媒体类型(用于POST和PUT请求)。Content-Type: application/x-www-form-urlencoded
Cookie服务器先前使用Set-Cookie(下文)发送的HTTP cookie。Cookie: $Version=1; Skin=new;

响应报文结构

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close

<html>
   <head>
     <title>An Example Page</title>
   </head>
   <body>
     <p>
       Hello World, this is a very simple HTML document.
     </p>
   </body>
</html>

服务器向客户端发送的响应消息包括:

  • 一个状态行,包括协议版本,一个空格,响应状态码,另一个空格,可能为空的原因短语,一个回车符和一个换行符,例如:HTTP/1.1 200 OK

  • 零个或多个响应头字段,每个字段包括不区分大小写的字段名,一个冒号,可选的前导空格,字段值,一个可选的尾随空格,并以回车符和换行符结束,例如:

Content-Type: text/html

  • 一个空行,包括一个回车符和一个换行符;
  • 一个可选的消息主体。`

响应状态

在HTTP/1.0及以后的版本中,
HTTP响应的第一行被称为“状态行”,包括一个数字状态码(例如“404”)和一个文本原因短语(例如“Not Found”)。

状态码的第一个数字定义了它的类别:

  • 1XX(信息性):请求已收到,继续处理。
  • 2XX(成功):请求已成功接收、理解并接受。
  • 3XX(重定向):需要进一步采取措施以完成请求。
  • 4XX(客户端错误):请求包含错误的语法或无法满足。
  • 5XX(服务器错误):服务器未能满足显然有效的请求。

响应头字段

Field nameDescriptionExample
Accept-CH请求HTTP客户端提示Accept-CH: UA, Platform
Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Methods, Access-Control-Allow-Headers指定哪些网站可以参与跨源资源共享Access-Control-Allow-Origin: *
Age对象在代理缓存中存在的时间(以秒为单位)Age: 12
Allow指定资源的有效方法。用于405方法不允许时Allow: GET, HEAD
Content-Encoding数据使用的编码类型。Content-Encoding: gzip
Content-Language所附内容的预期受众的自然语言或语言集合Content-Language: da
Content-Length响应体的长度(以八位字节为单位)Content-Length: 348
Content-Location返回数据的备用位置Content-Location: /index.htm
Content-Type此内容的MIME类型Content-Type: text/html; charset=utf-8

HTTP会话

3次握手

三次握手是TCP(传输控制协议)建立连接的过程。这个过程确保了客户端和服务器之间的可靠通信。三次握手的步骤如下:

三次握手是TCP(传输控制协议)建立连接的过程。这个过程确保了客户端和服务器之间的可靠通信。三次握手的步骤如下:

  1. 第一次握手(SYN)

    • 客户端向服务器发送一个TCP报文,其中设置了SYN(同步)标志位,表明客户端希望建立连接。
    • 客户端选择一个初始序列号(ISN)并包含在这个请求中。
  2. 第二次握手(SYN + ACK)

    • 服务器接收到客户端的SYN请求,并回应一个带有SYN和ACK标志位的TCP报文。
    • 服务器也选择一个初始序列号并包含在这个响应中。
    • 这时,服务器进入半开放状态,表示它已经准备好接受客户端的确认。
  3. 第三次握手(ACK)

    • 客户端接收到服务器的响应后,发送一个带有ACK标志位的TCP报文,表示连接已经建立。
    • 客户端和服务器都确认了对方的序列号,此时连接正式建立,双方可以开始进行数据传输。
      image.png

无状态协议

HTTP协议不存储每次请求的状态.
Q: 那么如何维护用户的信息, 比如账号保持登陆?
A: 使用cookies

Cookies(HTTP Cookies)是一种在客户端和服务器之间传递信息的小型文本文件。它们由服务器在HTTP响应头中的"Set-Cookie"字段创建,并存储在客户端的浏览器中。之后,浏览器每次请求相同的域时都会将这些Cookies信息包含在HTTP请求头中的"Cookie"字段中。

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostMan使用自带js库base64编码、sha256摘要、环境变量的使用

目录 1、环境变量的使用2、base64编码、sha256摘要、以及脚本的使用3、脚本代码 在请求调试接口的过程中&#xff0c;因为要使用大量相同的参数&#xff0c;使用变量的方式能很大程度上减轻接口调用的工作量 版本说明&#xff1a;Postman for Windows&#xff0c;Version&#…

ant-design-charts 对带缩略轴柱状图 根据数据自定义列处理, 以颜色为例

摘要 本文主要对ant-design-charts中带缩略柱状图进行自定义列处理 ant-design-charts版本&#xff1a;1.4.2 1、定义数据 const data1 [{"a": "七台河","b": 52827.32,c: 2},{"a": "万县","b": 20000,c: 1},…

【Java EE初阶二十四】servlet的深入理解

1. Servlet API 的学习 下面主要学习这三个类&#xff0c;就已经可以完成 Servlet 的大部分开发了&#xff1b; 1. Httpservlet 2. HttpServletRequest 3. HttpServletResponse 2. Httpservlet的学习 2.1 Httpservlet在tomcat的工作原理 写一个 Servlet 代码&#xff0c;往往都…

【达梦数据库】数据库的方言问题导致的启动失败

问题场景 在项目中采用了hibernate &#xff0c;连接数据库原本为ORACLE&#xff0c;后续打算改造为国产数据库 达梦 链接配置&#xff1a; # 达梦写法&#xff0c; index:driver-class-name: dm.jdbc.driver.DmDriverjdbc-url: jdbc:dm://192.168.220.225:5236/IDX4username:…

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果…

YOLOv5改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C3结构(附轻量化版本 + 高效涨点版本 + 结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv5中的C3,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一…

安全生产:AI视频智能分析网关V4如何应用在企业安全生产场景中?

随着科技的不断进步&#xff0c;视频智能分析技术在安全生产领域中的应用越来越广泛。这种技术通过计算机视觉和人工智能算法&#xff0c;可以对监控视频进行自动分析和处理&#xff0c;以实现多种功能&#xff0c;如目标检测、行为识别、异常预警等。今天我们以TSINGSEE青犀AI…

【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例

服务器数据恢复环境&#xff1a; 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列&#xff0c;操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障&#xff1a; 该服务器在工作过程中&#xff0c;raid6磁盘阵列中有两块磁盘先后离线&#xff0c;不知道是管理…

216972-99-5,Texas Red-X NHS ester,mixed isomers,生物标记反应中常用的试剂

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;216972-99-5&#xff0c;Texas Red-X NHS ester,mixed isomers&#xff0c;德州红-X 活化酯 一、基本信息 【产品简介】&#xff1a;The excitation peak of Texas Red is located at 589 nanometers, which allows…

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析&#xff1a; IPv4&#xff1a;AR…

Linux的ACL权限以及特殊位和隐藏属性

前言&#xff1a; ACL是什么&#xff1f; ACL&#xff08;Access Control List&#xff09;是一种权限控制机制&#xff0c;用于在Linux系统中对文件和目录进行细粒度的访问控制。传统的Linux权限控制机制基于所有者、所属组和其他用户的三个权限类别&#xff08;读、写、执行…

Intel处理器虚拟化技术VT-x86下实现小型虚拟化框架(1)

一.前言 我一直觉得&#xff0c;学习计算机中的一门新技术&#xff0c;一定要从历史去了解他的全貌。这样有利于我们了解事情的来龙去脉和发展的过程。一上来直接接触新兴事物&#xff0c;很容易陷入不知从何下手的困境。不了解历史发展&#xff0c;就不明白前人的一些操作。因…

【无刷电机学习】各种电机优势比较

目录 0 参考出处 1 有刷与无刷比较 2 交流与直流比较 3 内转子与外转子比较 4 Delta型与Y型定子绕向比较 5 低压BLDC的一些优点 0 参考出处 【仅作自学记录&#xff0c;不出于任何商业目的。如有侵权&#xff0c;请联系删除&#xff0c;谢谢&#xff01;】 维基百科…

2024 CKS 题库 | 11、AppArmor

不等更新题库 CKS 题库 11、AppArmor Context: APPArmor 已在 cluster 的工作节点node02上被启用。一个 APPArmor 配置文件已存在&#xff0c;但尚未被实施。 Task: 在 cluster 的工作节点node02上&#xff0c;实施位于 /etc/apparmor.d/nginx_apparmor 的现有APPArmor 配置…

opencv判断二值的情况

目的 先说说理论&#xff1a; 什么叫图像的二值化&#xff1f;二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0&#xff08;黑色&#xff09;或者255&#xff08;白色&#xff09;&#xff0c;也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个版…

STM32控制max30102读取血氧心率数据(keil5工程)

一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块&#xff0c;适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下&#xff1a; &#xff08;1&#xff09;光学测量&#xff1a;MAX30102内置…

java面试设计模式篇

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

【刷题记录】链表的回文结构

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.题目链接&#xff1a; LINK 2.详解思路&#xff1a; 思路&#xff1a;思路&#xff1a;先找到中间节点&#xff0c;然后逆置后半部分链表&#xff0c;一个指针指向链表的头节点&#xff0c;再一个指针指向逆置的头…

RK3568平台开发系列讲解(Linux系统篇)SPI 客户端通信

🚀返回专栏总目录 文章目录 一、spi_transfer二、spi_message三、初始化沉淀、分享、成长,让自己和他人都能有所收获!😄 SPI I/O模型由一组队列消息组成。我们提交一个或多个struct spi_message结构时,这些结构以同步或异步方式处理完成。单个消息由一个或多个struct sp…