HTTP协议,Web框架回顾

HTTP

请求协议详情
    -请求首行---》请求方式,请求地址,请求协议版本
    -请求头---》key:value形式
        -referer:上一次访问的地址
        -user-agenet:客户端类型
        -name:lqz
        -cookie:只要是当前域【https://www.cnblogs.com/】中有的cookie,当次请求就会携带
    -请求体:get请求一般没有请求体


响应协议详情
    -响应首行:响应协议版本,响应状态码,响应描述
    -响应头:key-value形式    cookie带在响应头中---》浏览器会把它存到浏览器的cookie中
    -响应体:浏览器页面中看到的东西 ---》html标签

补充:
    post 既能带在地址栏中数据,又能带在请求体中数据
    get请求一般都带在地址栏中


补充:


    -请求一个网址:
    https://www.cnblogs.com/liuqingzheng/articles
    域名(https://www.cnblogs.com)+路径(liuqingzheng/articles)


    -携带数据到后端:有哪几种方式?


        1 带在地址栏中 域名+路径+参数


        https://www.cnblogs.com/liuqingzheng/articles?name=xx&age=111
        django从:requets.GET    request.get_full_path


        2 带在请求体中---》http的请求体--》多种编码格式


            -json:后期会使用它多
            -urlencoded:form表单,默认
            -form-data:传文件
            django从:request.POST   request.body
            
       3 带在请求头中


         django中哪里取  request.META--->取出请求头


        -服务端响应给客户端数据
        -响应头中
        -用的最多:响应体
    
    
    $.ajax({
        path:/login/?name=lqz,
        data:{}
    })----->写成这样---》最终它会变成一个http请求,写的path实际是请求路径,写的data就是请求体

HTTP 请求响应流程

HTTP 协议的请求响应流程如下图所示:

客户端向服务器发送请求

当我们在浏览器地址栏中输入网址时,浏览器会向服务器发送 HTTP 请求,请求文本格式如下:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

其中,第一行请求行包括请求方法、请求 URL 和 HTTP 协议版本信息;第二行起的若干行为请求头(Header),用于告知服务器一些额外的信息,如客户端类型、支持的内容格式、是否支持压缩等。如上面的例子中,请求方法为 GET,请求 URL 为 /index.html,HTTP 版本为 1.1。

服务器处理请求 

当服务器接收到客户端请求后,会按照一定的算法进行处理,生成请求的资源,并将其封装在一个 HTTP 响应报文中返回给客户端。响应报文分为首部和主体两部分,其中首部用于描述响应的各种属性信息,包括响应码、内容类型、过期时间、缓存控制等信息;主体则是响应的实体内容。响应文本格式如下所示:
 

HTTP/1.0 200 OK
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Content-Length: 1234 (Number of bytes in the response body)
Connection: close   // 表示连接关闭<!DOCTYPE html>
<html>
<head><title>Example Website</title>
</head>
<body><h1>Welcome to Example Website!</h1><p>This is an example website created for demonstration purposes.</p>
</body>
</html>

其中,第一行为状态行,指定了 HTTP 响应状态码(200 表示成功)和对应的状态信息(OK);第二行起的若干行为响应头,包括内容类型、内容编码、长度和连接方式等;最后是响应主体,即服务器返回的实体内容。

HTTP 报文结构 

HTTP 报文分为请求报文和响应报文两种类型,它们的格式如下所示:

 请求报文格式

Request-Line
(headers)
CRLF
[message-body]

其中,Request-Line 包括请求方法、请求 URL 和 HTTP 协议版本;headers 为若干个头部信息;CRLF 表示换行符;message-body 为可选项,用于存放请求主体内容。

例如,以下是一个请求报文示例:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1name=John&age=30

 响应报文格式

Status-Line
(headers)
CRLF
[message-body]

其中,Status-Line 包括 HTTP 状态码和状态信息;headers 为若干个头部信息;CRLF 表示换行符;message-body 为可选项,用于存放响应主体内容。

例如,以下是一个响应报文示例:

HTTP/1.0 200 OK
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Content-Length: 1234 (Number of bytes in the response body)
Connection: close   // 表示连接关闭<!DOCTYPE html>
<html>
<head><title>Example Website</title>
</head>
<body><h1>Welcome to Example Website!</h1><p>This is an example website created for demonstration purposes.</p>
</body>
</html>

Web框架

1 web 框架是什么

Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率

2 python界有个协议  wsgi协议 

客户端浏览器和         ---------------------->      python web框架之间通信需要遵循这个协议    发出来的是http请求    符合wsgi协议的web服务器         django,flask  requset response
    
    
 基于这个协议的web服务器:
        -wsgiref:django框架默认就用它---》性能低,并发量低--》测试阶段使用
        -uwsgi:c语言写的
        -gunicorn:python写的
        
   
协议到底怎么规定的:

web服务器后面的  python框架一定是一个可调用的对象,必须接收两个参数(environ, start_response)--->environ它是个字典----》里面全是http请求的东西
    

3 使用wsgiref写个web服务

from wsgiref.simple_server import make_serverdef mya(environ, start_response):print(environ)start_response('200 OK', [('Content-Type', 'text/html')])if environ.get('PATH_INFO') == '/index':with open('index.html','rb') as f:data=f.read()elif environ.get('PATH_INFO') == '/login':with open('login.html', 'rb') as f:data = f.read()else:data=b'<h1>Hello, web!</h1>'return [data]# 可调用对象---》能加括号执行的对象if __name__ == '__main__':myserver = make_server('', 8011, mya) # 请求来了---》经过wsgiref---》调用后面的可调用对象--》传入两个参数(environ, start_response)print('监听8011')myserver.serve_forever()

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

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

相关文章

500元价位开放式耳机哪款好用、百元价位开放式耳机推荐

经常佩戴入耳式耳机的朋友应该都遇到过耳朵肿胀的感觉&#xff0c;这个时候&#xff0c;就是耳朵在告诉你&#xff0c;该休息一会了。如果耳朵里经常塞着耳机听歌&#xff0c;时间久了很容易引起听力衰退等问题&#xff0c;这是不可逆的伤害。各位朋友如果和我一样每天都戴着耳…

1120:最值交换

题目描述 有一个长度为n的整数序列。请写一个程序&#xff0c;先把序列中的最小值与第一个数交换&#xff0c;再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。 int MinIndex(int a[], int n); //函数返…

C++基础 -12- 拷贝构造(浅拷贝)

系统会自动生成浅拷贝&#xff0c;就相当于直接赋值 #include "iostream"using namespace std;class base { public:base(int a, int b) : a(a), b(b){}int a;int b; }; int main() {base newbase1(10, 20);base newbase2 newbase1;cout << newbase1.a <…

数据库的增删查改(CRUD)基础版

CRUD: create增加、retrieve查询、update更新、delete删除 注意一点&#xff1a;MySQL对大小写是不敏感的 目录 新增&#xff08;create&#xff09; 全列插入 指定列插入 多行插入 查询&#xff08;Retrieve&#xff09; 列查询 全列查询 指定列查询 表达式查询 …

wsl 命令详解

WSL 简介 WSL全称 Windows Subsystem for Linux &#xff0c;是微软开发的一个运行在Windows上的兼容层&#xff0c;它允许开发人员和用户直接在Windows上运行原生Linux二进制文件&#xff0c;而无需配置或修改系统。 WSL命令是用于管理和操作WSL子系统的工具。 常用WSL命令…

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后&#xff0c;都有一整套的架构、测试、监控和安全措施。今天&#xff0c;让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…

Java核心知识点整理大全22-笔记

目录 19.1.14. CAP 一致性&#xff08;C&#xff09;&#xff1a; 可用性&#xff08;A&#xff09;&#xff1a; 分区容忍性&#xff08;P&#xff09;&#xff1a; 20. 一致性算法 20.1.1. Paxos Paxos 三种角色&#xff1a;Proposer&#xff0c;Acceptor&#xff0c;L…

YOLOv8独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

VMware通过ISO镜像安装window2016虚拟机

1.点文件->新建虚拟机 2.进入到下边页面 3.根据你的服务器硬件选择硬件兼容性 4.选择2016版本的windows(注&#xff1a;没有该版本的话选择最高版本) 5.根据你的需求选择引导设备( 启动过程&#xff1a; BIOS&#xff1a; 在计算机启动时&#xff0c;BIOS负责进行自检&#…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合&#xff0c;为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞&#xff0c;未经身份认证的攻击者可上传恶意的raq文件…

Kanna库代码示例

编写一个使用Kanna库的网络爬虫程序。以下是代码的详细解释&#xff1a; swift import Kanna // 创建一个对象 let proxy Proxy(host: ") // 创建一个Kanna对象 let kanna Kanna(proxy: proxy) // 创建一个请求对象 let request Request(url: "") // 使用…

【算法刷题】Day8

文章目录 202. 快乐数解法&#xff1a; 11. 盛最多水的容器解法&#xff1a; 202. 快乐数 原题链接 拿到题&#xff0c;我们先看题干 把一个整数替换为每个位置上的数字平方和&#xff0c;有两种情况&#xff1a; 重复这个过程始终不到 1&#xff08;无限死循环&#xff09;结…

python基于YOLOv7系列模型【yolov7-tiny/yolov7/yolov7x】开发构建钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

专业的事交给专业的公司来做,文件销毁 数据销毁 硬盘销毁

在当今信息化社会&#xff0c;数据和文件已经成为企业和个人生活中不可或缺的一部分。然而&#xff0c;随着数据量的不断增长&#xff0c;如何确保数据的安全性和隐私性成为了一个亟待解决的问题。为了解决这个问题&#xff0c;文件销毁、硬盘销毁、数据销毁和物料销毁等技术应…

无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

【Python基础】协程(迭代器、生成器、协程、gevent介绍)

&#x1f308;欢迎来到Python专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mys…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时&#xff0c;服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中&#xff0c;如果处理不当开发&#xff0c;可能会导致爬虫无法获取所需的数据&#xff0c;从而影响爬虫…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

H3C堆叠和聚合配置

因ensp做不了堆叠&#xff0c;所以用了华三的模拟器HCL&#xff0c;下载地址&#xff1a;H3C网络设备模拟器官方免费下载-新华三集团-H3C 拓朴如下&#xff1a; 1、堆叠配置步骤如下&#xff1a; 1、S1和S2配置堆叠过程&#xff1a; [S1] irf domain 1 irf member 1 priority …

如何通过CRM实现客户关系管理?

——“小米加步枪是打不赢现代化战争的。” ——”CRM系统已成为企业掘金未来的必备。“ 数字化转型已经成为了企业发展的重要方向&#xff0c;然而数字化转型不仅仅是把线下搬到线上&#xff0c;更重要的是&#xff0c;真正的数字化转型应该以客户的连接和客户的数字化作为突破…