Python中的HTTP协议

news2024/12/28 23:37:44

文章目录

  • 一. 网址URL
  • 二. HTTP协议
    • 1. HTTP协议的概念
    • 2. HTTP协议的作用
    • 3. HTTP请求报文与响应报文
      • ① HTTP请求报文
        • Ⅰ. GET请求报文格式
        • Ⅱ. GET请求报文分析
        • Ⅲ. POST请求报文格式
        • Ⅳ. POST请求报文分析
        • Ⅴ. GET与POST请求报文总结
      • ② HTTP响应报文
        • Ⅰ. HTTP响应报文格式
        • Ⅱ. HTTP响应状态码
    • 3. 查看HTTP协议的通信过程
      • ① HTTP协议的通信过程
      • ② 浏览器开发者工具
      • ③ 浏览器开发者工具使用
        • Ⅰ. 了解各选项卡功能
        • Ⅱ. 使用NetWork发送HTTP请求
        • Ⅲ. 查看HTTP协议的通信过程
        • Ⅳ. 查看HTTP协议的通信过程小结
  • 三. 搭建静态Web服务器
    • 1. 什么是静态Web服务器
    • 2. 搭建Python自带的静态Web服务器
    • 3. 使用Python开发自己的Web服务器
    • 4. FastAPI框架

一. 网址URL

网址又称为URL,URL的英文全拼是(Uniform Resoure Locator),表达的意思是统一资源定位符,通俗理解就是网络资源地址。

在这里插入图片描述

二. HTTP协议

1. HTTP协议的概念

HTTP协议的全称是(HyperText Transfer Protocol),翻译过来就是超文本传输协议

超文本是指在文本数据的基础上还包括非文本数据,非文本数据有图片、音乐、视频等,而这些非文本数据会使用链接的方式进行加载显示,通俗来说超文本就是带有链接的文本数据也就是我们常说的网页数据,如下图所示:

在这里插入图片描述

传输HTTP协议格式的数据是基于TCP传输协议的,发送数据之前需要先建立连接

2. HTTP协议的作用

TCP传输协议是用来保证网络中传输的数据的安全性的
HTTP协议是用来规定这些数据的具体格式的。

HTTP协议规定的数据格式是浏览器和Web服务器通信数据的格式,也就是说浏览器和Web服务器通信需要使用HTTP协议。

在这里插入图片描述

3. HTTP请求报文与响应报文

① HTTP请求报文

HTTP最常见的请求报文有两种:① GET方式的请求报文 ② POST方式的请求报文
GET: 获取Web服务器数据
POST: 向Web服务器提交数据

Ⅰ. GET请求报文格式

在这里插入图片描述

---- 请求行 ----
GET /wp-content/uploads/2020/12/zm.svg HTTP/1.1  # GET请求方式 请求资源路径 HTTP协议版本
---- 请求头 -----
Host: www.itcast.cn  # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Upgrade-Insecure-Requests: 1 # 让浏览器升级不安全请求,使用https请求
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36  # 用户代理,也就是客户端的名称
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 # 可接受的数据类型
Accept-Encoding: gzip, deflate # 可接受的压缩格式
Accept-Language: zh-CN,zh;q=0.9 #可接受的语言
Cookie: pgv_pvi=1246921728; # 登录用户的身份标识
---- 空行 ----
Ⅱ. GET请求报文分析
GET / HTTP/1.1\r\n

Host: www.itcast.cn\r\n  
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: pgv_pvi=1246921728; \r\n

\r\n  (请求头信息后面还有一个单独的’\r\n’不能省略)   =>  空白行

在HTTP请求中,每个选项结束后,其后面都要添加一个标签\r\n(代表一行的结束)

Ⅲ. POST请求报文格式

在这里插入图片描述

---- 请求行 ----
POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1 # POST请求方式 请求资源路径 HTTP协议版本
---- 请求头 ----
Host: mail.itcast.cn # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Content-Type: application/x-www-form-urlencoded  # 告诉服务端请求的数据类型
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 # 客户端的名称
---- 空行 ----
---- 请求体 ----
username=hello&pass=hello # 请求参数
Ⅳ. POST请求报文分析
POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1\r\n
Host: mail.itcast.cn\r\n
Connection: keep-alive\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
\r\n(请求头信息后面还有一个单独的’\r\n’不能省略)
username=hello&pass=hello

每项数据之间使用\r\n进行结束

Ⅴ. GET与POST请求报文总结

① 一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成
② 请求行是由三部分组成: 请求方式、请求资源路径、HTTP协议版本(1.1或2.0)
③ GET方式的请求报文没有请求体,只有请求行、请求头、空行组成
④ POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成。
注意:POST方式可以允许没有请求体,但是这种格式很少见。

② HTTP响应报文

Ⅰ. HTTP响应报文格式

在这里插入图片描述

--- 响应行/状态行 ---
HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
--- 响应头 ---
Server: Tengine # 服务器名称
Content-Type: text/html; charset=UTF-8 # 内容类型(响应的数据类型,image/png)
Connection: keep-alive # 和客户端保持长连接
Date: Fri, 23 Nov 2018 02:01:05 GMT # 服务端的响应时间
--- 空行 ---
--- 响应体 ---
<!DOCTYPE html><html lang=“en”> …</html> # 响应给客户端的数据(html网页)
Ⅱ. HTTP响应状态码

是用于表示Web服务器响应状态的3位数字代码

状态码说明
200服务器已成功处理了请求
400错误的请求,请求地址或者参数有误
404请求资源在服务器不存在
500(服务器端异常)服务器内部源代码出现错误

3. 查看HTTP协议的通信过程

① HTTP协议的通信过程

每一次浏览器和服务器的数据通讯,都是成对出现的即请求和响应,同时每一次请求和响应都必须符合HTTP协议的格式

在这里插入图片描述

② 浏览器开发者工具

安装GoogleChrome浏览器,在Windows和Linux平台按F12Ctrl+Shift+I调出开发者工具,Mac中选择“视图 ->开发者->”开发者工具或者直接使用alt+command+i 这个快捷键,还有一个多平台通用的操作就是在网页右击选择检查。

提示:开发者工具还是查看网页布局和JS代码调试的利器。

③ 浏览器开发者工具使用

Ⅰ. 了解各选项卡功能

在这里插入图片描述

Ⅱ. 使用NetWork发送HTTP请求

在这里插入图片描述

Ⅲ. 查看HTTP协议的通信过程
  • 请求头,请求头信息
    在这里插入图片描述
  • 响应头,响应头信息
    在这里插入图片描述
Ⅳ. 查看HTTP协议的通信过程小结

浏览器的开发者工具是查看http协议的通信过程利器,通过Network标签选项可以查看每一次的请求和响应的通信过程,调出开发者工具的通用方法是在网页右击选择检查。
Headers选项总共有三部分组成:
① General: 主要信息
② Response Headers: 响应头
③ Request Headers: 请求头
Response选项是查看响应体信息的

三. 搭建静态Web服务器

1. 什么是静态Web服务器

2. 搭建Python自带的静态Web服务器

3. 使用Python开发自己的Web服务器

4. FastAPI框架

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

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

相关文章

108. UE5 GAS RPG 实现地图名称更新和加载关卡

在这一篇里&#xff0c;我们将实现对存档的删除功能&#xff0c;在删除时会有弹框确认。接着实现获取玩家的等级和地图名称和存档位置&#xff0c;我们可以通过存档进入游戏&#xff0c;玩家在游戏中可以在存档点存储存档。 实现删除存档 删除存档需要一个弹框确认&#xff0…

DNS批量解析管理软件有什么用

在复杂的网络环境中&#xff0c;DNS批量解析管理软件犹如一把功能强大的钥匙&#xff0c;开启了高效网络管理的大门&#xff0c;为网络运营和维护带来了诸多便利。 1、对于网络服务提供商而言&#xff0c;DNS批量解析管理软件极大地提高了工作效率 传统的DNS解析管理方式在处…

IoT [remote electricity meter]

IoT [remote electricity meter] 物联网&#xff0c;远程抄表&#xff0c;电表数据&#xff0c;举个例子

sql数据库-排序查询-DQL

目录 语法 排序方式 举例 将表按年龄从小到大排序 将表按年龄从大到小排序 ​编辑 多重排序 将表按年龄升序&#xff0c;年龄相同按入职时间降序 语法 select * from 表名 order by 字段名1 排序方式1&#xff0c;字段2 排序方式2; 排序方式 升序&#xff1a;ASC&…

在spring boot工程中使用Filter时,@WebFilter 注解不生效的问题分析和解决方案

1. 问题描述 首先编写一个Filter类并通过Component放入spring容器中&#xff0c;通过实现jakarta.servlet中提供的Filter接口完成过滤器的创建&#xff0c;代码如下。 import jakarta.servlet.*; import jakarta.servlet.annotation.WebFilter; import org.springframework.st…

学习threejs,使用TWEEN插件实现动画

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.PLYLoader PLY模型加…

TypeScript在现代前端开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 TypeScript在现代前端开发中的应用 TypeScript在现代前端开发中的应用 TypeScript在现代前端开发中的应用 引言 TypeScript 概述…

CTF-Crypto-简单加密

打开首页看题目 描述看起来是一段乱码&#xff0c;拉入随波逐流&#xff0c;未解决 e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA 观察字符串&#xff0c;末尾是AA&#xff0c;其中可能含有base64加密 找寻Ascll码表&#xff0c;发现A的Ascll是65&#xff0c;的Ascl…

MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能

MacOS下&#xff0c;如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能 在Mac上的Safari浏览器中&#xff0c;可以通过实况文本功能来实现图片中的文本翻译。关闭步骤具体步骤如下&#xff1a; 在浏览器地址栏&#xff0c;鼠标右击翻译按钮&#xff0c;然后点击“首选…

操作系统——虚拟存储器(含思维导图)

本教材为中国铁道出版社——操作系统&#xff08;第四版&#xff09;刘振鹏、张明、王煜著。本篇文章为第六章复习。 目录 思维导图&#xff1a; ​编辑一、虚拟存储器 1.理论基础 2.定义 二、分页虚拟存储管理 1.基本原理 2.缺页中断 3.页面置换 &#xff08;1&…

基于8.0 Update 3b 的ESXi-Arm Fling

很久没有更新过 ESXi-Arm 的版本了&#xff0c;博通旗下的 VMware 居然把它更新到了 8.0U3b。 下载地址&#xff1a;https://community.broadcom.com/flings 我准备使用离线更新&#xff0c;就没有下载 ISO&#xff0c;直接下载ESXi-Arm-Offline-Depot-2_00-dl.zip scp 上传…

python解析网页上的json数据落地到EXCEL

安装必要的库 import requests import pandas as pd import os import sys import io import urllib3 import json测试数据 网页上的数据结构如下 {"success": true,"code": "CIFM_0000","encode": null,"message": &quo…

C#桌面应用制作计算器

C#桌面应用制作简易计算器&#xff0c;可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器&#xff0c;然后将button控件排列放置Pane…

谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报

Google 宣布推出适用于 Android 的新安全功能&#xff0c;可实时防御诈骗和有害应用。 这些功能由先进的设备内置 AI 提供支持&#xff0c;可在不损害隐私的情况下增强用户安全性。 这些新的安全功能首先在 Pixel 上推出&#xff0c;并将很快在更多 Android 设备上推出。 诈…

HarmonyOS ArkTs 解决流式传输编码问题

工作日志 日期&#xff1a;2024-11-15 标题&#xff1a;HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题&#xff1a;在处理流式数据的 HTTP 请求时&#xff0c;服务器返回的数据存在编码问题&#xff0c;导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

MySQL数据库最大连接数查询及修改

MySQL数据库最大连接数查询及修改 1. 客户端连接数超出异常案例 Navicat连接异常信息如下&#xff1a; 2. 查看MySQL最大客户端连接数 通过mysql client命令登录MySQL数据库&#xff08;登录用户不受限制&#xff0c;既可以是 root管理员用户&#xff0c;也可以是常规用户&a…

使用Wireshark获取USB HID(Human Interface Device)报告描述符

使用Wireshark选择需要获取的USB进行抓取数据&#xff0c;找到设备&#xff08;host&#xff09;接收信息的数据 第二栏出现hid报告&#xff0c;右击选择复制流 将复制的内容粘贴到USB标准请求及描述符在线分析工具 - USB中文网 进行解析 以图中获取手写板的数据为例&#xff…

TofuAI处理BT1120时序视频要求

时序要求 BT.1120视频用于1920x108030Hz数字视频输入。具体时序必须严格按照说明。BT.1120输入电平为1.8V。 BT1120数字视频采用YCbCr彩色格式输出&#xff0c;串行数据位宽为16bit&#xff0c;亮度在 高8bit&#xff0c;色度在低8bit&#xff0c;亮度和色度在同一个时钟周期输…

聊天服务器(8)用户登录业务

目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include "chatservice.hpp" #include "public.hpp" #include <string> #include <muduo/base/Loggi…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC&#xff08;OutPut Compare&#xff09;输出比较。输出比较可以通过比较CNT与CCR寄存器的关系&#xff0c;来对输出电平进行置1/置0/翻转的操作&#xff0c;可…