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

Python中的HTTP协议

文章目录

  • 一. 网址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.kler.cn/a/395657.html

相关文章:

  • dockers+Jenkins+git+自动化框架
  • 接口文档的编写
  • 使用python-Spark使用的场景案例具体代码分析
  • 医院信息化与智能化系统(21)
  • 算法训练(leetcode)二刷第二十六天 | *452. 用最少数量的箭引爆气球、435. 无重叠区间、*763. 划分字母区间
  • 使用 Vision 插件让 GitHub Copilot 识图问答
  • Linux kernel 堆溢出利用方法(二)
  • 2024年11月15日Github流行趋势
  • GOLANG笔记第四周
  • 【回溯法】——单词搜索
  • Oracle 单机及 RAC 环境 归档模式及路径修改
  • Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)
  • 搜索,CF 1666L - Labyrinth
  • ui->tableView升序
  • 自动驾驶3D目标检测综述(二)
  • 安科瑞ARD2F智能型电动机保护器在某水泥厂的应用-安科瑞黄安南
  • 京东 2025届秋招 自然语言处理
  • 为以人工智能为中心的工作负载重新设计的全局控制台
  • 如何在C#中处理必盈接口返回的股票数据?
  • 数据结构与算法:二分搜索/二分查找的python实现与相关力扣题35.搜索插入位置、74.搜索二维矩阵
  • A036-基于SpringBoot的产业园区智慧公寓管理系统
  • Transformer中的算子:其中Q,K,V就是算子
  • MySQL 5.7 源码导读
  • Leecode刷题C语言之最少翻转次数使二进制矩阵回文①
  • Excel SUMIFS
  • 无人机云台基础——CKESC电调小课堂10