01前端导入

【一】前后端介绍

1.前端:通俗的说就是用户所看到的页面,通过浏览器渲染出来的页面
2.后端:就是对数据进行逻辑校验和加密等操作,用户看不到的操作

【二】浏览器访问地址全流程

1.输入网址--》https://www.baidu.com/域名
2.解析域名----》变成一串数字:端口号,IP地址+端口号,会标记一个独一无二的接入网络的应用程序
3.用IP地址+端口号与服务器(通过三次握手)建立TCP连接
4.服务端接收请求,响应请求发送数据给客户端
5.客户端(前端)得到响应数据后,对页面进行渲染后,与服务器断开本次请求连接断开的连接不是指TCP的连接本次的请求被断开
"""注意:用户所看到的界面都加载好了,浏览器(客户端)通常会继续与服务器保持连接(如果连接是持久的),以便处理后续的用户交互(如点击按钮、提交表单等),这些交互通常会触发新的HTTP请求。由于每个HTTP请求都是独立的,并且一旦其响应被接收和处理,该请求就被认为是“完成”的。所以要断开这次请求连接但是tcp链接是没有断开的"""

【三】学习http协议前须知

1.Mac地址---》网卡地址
2.广播---》在同一个局域网内有一台主机发送消息,一个局域网内的主机都能收到
3.ethernet---》以太网协议,Ethernet(以太网)是一种广泛应用于局域网(LAN)的计算机通信技术,它采用了一系列标准和规范,确保不同设备之间的有效通信
4.IP---》每台计算机接入互联网的地址
5.port---》标识每台计算机上的应用程序
6.HTTP协议---》超文本传输协议,是一个应用层协议,用于在万维网上传输超文本和其他数据。规定客户端怎么与服务器交换信息和提供服务
7.internet--->互联网,多个局域网通过路由器连接在一起组成互联网

【四】HTTP协议(重点)

1.自己写的服务器和浏览器无法交互,是由于我们的服务器没有遵守HTTP协议去传输数据
2.HTTP协议特点
1.无状态---》服务器不会记住请求的任何信息,而且每个请求都是独立的,服务器只会对当前的请求进行响应,服务端无法区分多次请求的客户端是否同一个客户端。
2.是一种应用层协议
3.是基于响应和请求的协议---》所有请求都是客户端发起,服务端响应
4.短连接
就是每个请求都是独立的,请求得到响应完成后,就会断开请求连接
5.持久连接
都是在不断的交换数据,TCP连接是没有断开的
​

【五】HTTP请求和响应格式

(1)请求格式客户端给服务端发送消息应该遵循的数据格式 请求首行(请求方法  请求路径  协议版本)请求头(一大堆k:v键值对)(换行不能省略)请求体(携带敏感数据:密码 身份照号...) 不是一直都有
"""         
请求方法  请求路径  http协议版本                   <---- http响应的一行内容,也叫请求行
请求头选项1: 选项值
请求头选项2: 选项值
....
请求头选项n: 选项值
​
请求体(可以有多行,前后必有空行)
eg:
1.发送get请求
GET  /get  HTTP/1.1
Host: httpbin.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
2.发送post请求
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/json
Content-Length: 44
​
{"name": "xiaoming", "age": 16,"pwd": "123"}
"""
(2) 响应格式服务端给客户端发送消息应该遵循的数据格式 响应首行(响应状态码 协议版本)响应头(一大堆k:v键值对)(换行不能省略)响应体(给浏览器展示给用户看的页面内容)
"""
响应状态码 响应文本提示 协议版本                             <-----  http响应的第一行内容,响应行
响应头选项1: 选项值
响应头选项2: 选项值
....
响应头选项n: 选项值
(换行不能省略)
响应体(服务端返回的正文信息,前后必有空行)
​
"""

(1)请求方法
请求方法描述
GET表示客户端希望从服务器中获取下载资源信息
POST表示客户端希望上传文件或通过请求在服务器创建资源信息。
PUT表示客户端希望修改或更新服务器资源(表示修改全部资源信息,例如数据表的一整个记录)
PATCH表示客户端希望修改或更新服务器资源(表示修改部分资源信息,例如数据表的一个记录里面某个属性值)
DELETE表示客户端希望删除或废弃服务器资源
OPTION表示客户端希望获取服务器所支持的请求方法列表
HEAD表示客户端希望获取服务器支持的跨域地址列表
(2)请求头
对客户端的一些说明
选项描述
Host指定客户端请求的服务器的域名和端口号。
Content-Type告诉服务器,客户端请求携带的请求体数据的媒体类型信息(MIME类型)
User-Agent告知服务器HTTP 客户端网络代理程序的版本信息,一般就是浏览器的版本信息。
Authorization告知服务器客户端的Web认证信息。
Content-LengthHTTP报文中请求体的大小,以字节为单位。
Referer告诉服务器该网页是从哪个页面链接过来。也就是上一页页面的地址。
Accept指定客户端能够接收并理解的媒体类型类型(MIME类型),用于表达希望服务端的返回资源格式。
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。
Pragma指定服务端控制缓存行为。http/1.0以前的字段。
Cache-Control指定服务端控制缓存行为。http/1.1以后的字段。
Upgrade向服务器请求在当前http协议的基础上升级采用新的某种传输协议以便服务器进行转换
Connection指定本次http通信结束以后,是否关闭TCP网络连接。如果设置持久连接,则可以在一次会话中,可以使用同一个TCP连接,进行多次的HTTP通信,提高效率。
(3)常见的MIME格式
描述别名
HTML网页
json文本text/json
纯文本,普通文本
xml文档
js脚本text/javascript
css样式
png格式图片
jpg格式图片
gif格式图片
gzip格式压缩包
doc文档
docx文档
xls文档
xlsx文档
pdf文档
mp3音频
mp4视频
(4)响应状态码
状态码类型描述
1xx告诉客户端,本次请求,服务端还在持续处理中,并没有结束
2xx告诉客户端,本次请求,服务端已经接收并成功受理了。
3xx告诉客户端,服务端位置发生改变,希望客户端重定向访问跳转新的服务器地址进行请求
4xx告诉客户端,本次请求有误,服务器无法处理。
5xx告诉客户端,本次请求服务端在处理过程中服务端出错了。
常见状态码
状态码响应信息描述
101Switching Protocols服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用升级协议来完成请求。
200OK请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。常用于GET,PUT或PATCH
201Created请求已成功,请求的资源已经创建成功或更新完成,常用于POST,PUT或PATCH
204No Content请求已成功,但是没有任何内容返回。常用于DEELTE
301Moved Permanently永久重定向,表示当前客户端请求的资源地址已经永久发生改变。
302Move Temporarily临时重定向,表示当前客户端请求的资源地址还存在,但是访问客户端达不到访问资源的条件,所以暂时无法访问。
304Not Modified表示本次客户端请求的资源,并非来自服务端,而是本地缓存。如果web项目有做了客户端缓存,一般静态文件都会出现304
305Use Proxy被请求的资源必须通过指定的代理才能被访问。
307Temporary Redirect请求的资源临时从不同的URI 响应请求。
400Bad Request本次请求,报文语义有误或请求参数有误,当前请求无法被服务器理解。
401Unauthorized本次请求,需要需要用户验证,但用户并没有提供认证。
403Forbidden服务器已经理解请求,但是拒绝执行它。一般是因为没有权限导致的。
404Not Found请求失败,请求所希望得到的资源未被在服务器上发现,请求路径不存在。
405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源。使用了错误的请求方法。
500Internal Server Error服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。就是服务端的代码报错了。
502Bad Gateway网关宕机,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。一般就是大量访问请求导致服务器瘫痪或宕机了。
503Service Unavailable网关过载,由于临时的服务器维护或者过载,服务器当前无法处理请求。
504Gateway Timeout网关超时,作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器(例如DNS)收到响应。
507Insufficient Storage服务器无法存储完成请求所必须的内容。

【六】服务器模板

import socket
server=socket.socket()
server.bind(("127.0.0.1",8810))
server.listen(5)
sock,addr=server.accept()
while True:data=sock.recv(1024)data_str=data.decode()print(data_str)# 响应行respoonse_line="HTTP/1.1 200 OK\r\n"# 响应头response_header = "Server:Python20ws/21.1\r\n"# 空行response_blank = "\r\n"# 响应主体response_body = "<html><h1>HelloWorld!<h1/><html/>"data1=respoonse_line+response_header+response_blank+response_bodysock.send(data1.encode())
​

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

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

相关文章

AI产品经理一篇读透知识图谱(万字深度好文)

1、知识图谱技术综述 知识图谱技术是人工智能技术的组成部分&#xff0c;其强大的语义处理和互联组织能力&#xff0c;为智能化信息应用提供了基础。以下内容涵盖了基本定义与架构、代表性知识图谱库、构建技术、开源库和典型应用。 引言 随着互联网的发展&#xff0c;网络数…

查询进程并且杀死

使用命令行工具 Tasklist 和 Taskkill 来查询和删除&#xff08;终止&#xff09;进程。以下是详细步骤&#xff1a; 查询进程 打开命令提示符&#xff08;以管理员身份运行以获得所有权限&#xff09;。 使用 tasklist 命令列出所有正在运行的进程&#xff1a; tasklist这将…

抖音短视频矩阵系统全攻略:从入门到精通

在数字化时代&#xff0c;短视频已成为连接用户与内容的桥梁。抖音作为短视频领域的领军平台&#xff0c;其影响力不容小觑。抖音短视频矩阵系统的构建和管理&#xff0c;对于希望在这个平台上取得成功的创作者和品牌来说至关重要。本文将提供一份全面的攻略&#xff0c;从入门…

Python|Pyppeteer实现获取携程网“指定城市”特价机票(25)

前言 本文是该专栏的第25篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文以携程的城市特价机票为例子,通过pyppeteer登录携程,然后指定两个目标城市(出发城市,目的地到达城市),获取这两个城市之间的特价机票。 需要注意的是,对pyppeteer不太熟悉的…

Qt篇——QLabel固定尺寸的情况下让字体大小自适应并自动换行以完整显示

当文字较少时&#xff0c;默认字体大小为16&#xff1b;当文字内容较多时&#xff0c;自动换行并缩小字体。 举例&#xff1a; 字体较少时 字体较多时 思路&#xff1a; 设置自动换行属性 setWordWrap&#xff1b;通过QFontMetrics计算文字字体要多大、显示多少行才不会超过…

做外贸干一行爱一行,还是干一行厌一行?

记得年轻的时候&#xff0c;每每和同龄人不同行业聊天的时候&#xff0c;大家普遍的感觉就是&#xff1a;自己这一行太苦了&#xff0c;以后有孩子了干什么都不能让他做自己这一行。 和在银行上班的同学聊天&#xff0c;他们最大的苦恼是需要每天开发客户&#xff0c; 让客户在…

【0295】Posgres内核 dynahash table 之 hash_search 实现原理(2)

相关文章: 【0294】Postgres内核 dynahash 之 hash_search 实现原理(1) 0. 前言 在【0294】Postgres内核 dynahash 之 hash_search 实现原理(1) 一文中,从Postgres内核源码角度详细讲解了dynamic hash table中 hash search 的实现原理。 具体内容: 如何确定segment位置…

8、开发与大模型对话的独立语音设备

一、设计原理 该系统的核心部分主要由ESP32-WROVER开发板和ESP32-CAM摄像头、MAX9814麦克风放大器模块、MAX98357功放、声音传感器和SU-03T语音识别芯片构成。通过使用ESP32-WROVER开发板,用户可以实现通过语音与ai进行交互并进行人脸识别。 系统中,从外部输入电源中获取电源…

一手洞悉泰国slot线上游戏投放本土网盟CPI计费广告优势

一手洞悉泰国slot线上游戏投放本土网盟CPI计费广告优势 ​在泰国这个拥有独特文化背景和审美观念的国家&#xff0c;Slots游戏以其丰富的玩法和刺激的体验迅速赢得了玩家们的喜爱。然而&#xff0c;要在竞争激烈的市场中脱颖而出&#xff0c;有效的推广策略显得尤为重要。本土…

HTTP有哪些失败原因?怎么处理?

在网络通信中&#xff0c;HTTP&#xff08;超文本传输协议&#xff09;是最常用的协议之一&#xff0c;它支持万维网上的数据交换。然而&#xff0c;在使用HTTP进行数据传输时&#xff0c;可能会遇到各种失败的情况。本文将探讨HTTP请求失败的常见原因&#xff0c;并提供相应的…

【Excel操作】Python Pandas判断Excel单元格中数值是否为空

判断Excel单元格中数值是为空&#xff0c;主要有下面两种方法&#xff1a; 1. pandas.isnull 2. pandas.isna判断Excel不为空&#xff0c;也有下面两种方法&#xff1a; 1. pandas.notna 2. pandas.notnull假设有这样一张Excel的表格 我们来识别出为空的单元格 import panda…

Python酷库之旅-第三方库Pandas(010)

目录 一、用法精讲 22、pandas.read_hdf函数 22-1、语法 22-2、参数 22-3、功能 22-4、返回值 22-5、说明 22-6、用法 22-6-1、数据准备 22-6-2、代码示例 22-6-3、结果输出 23、pandas.HDFStore.put方法 23-1、语法 23-2、参数 23-3、功能 23-4、返回值 23-5…

【Linux】线程(轻量级进程)

目录 一、线程概念 二、线程特性 2.1 进程更加轻量化 2.2 线程的优点 2.3 线程的缺点 2.4 线程的异常 2.5 线程用途 三、进程和线程 四、线程控制 4.1 包含线程的编译链接 4.2 创建线程 4.3 获得线程自身的ID 4.4 线程终止 4.5 线程等待 4.6 线程分离 4.6 线程…

SpringBoot实现Read Through模式

简介 Read Through模式通常是指一种缓存策略&#xff0c;其中当应用程序尝试读取数据时&#xff0c;缓存系统首先被检查以查看数据是否已经存在于缓存中。如果缓存中存在数据&#xff08;即缓存命中&#xff09;&#xff0c;则直接从缓存中读取数据并返回给应用程序。如果缓存…

使用Java构建可靠的分布式缓存系统

使用Java构建可靠的分布式缓存系统 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 分布式缓存系统概述 在现代软件架构中&#xff0c;分布式缓存系统扮演着至关重要的角色&#xff0c;它能够显…

恢复出厂设置后如何从 iPhone 恢复数据

在 iPhone 恢复出厂设置后&#xff0c;所有数据都会被删除&#xff0c;并且 iPhone 将恢复到原始出厂设置&#xff0c;这意味着您的所有 iPhone 数据&#xff0c;包括照片、视频、联系人和应用程序都将消失。 幸运的是&#xff0c;如果您有备份可以恢复&#xff0c;这并不一定…

Leetcode 3208. Alternating Groups II

Leetcode 3208. Alternating Groups II 1. 解题思路2. 代码实现 题目链接&#xff1a;3208. Alternating Groups II 1. 解题思路 这一题同样只需要想明白问题的核心就行了&#xff0c;这道题的核心就在于说找到所有的交替不同的最大字串&#xff0c;假设其长度为n&#xff0…

处理训练和验证数据集

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

名企面试必问30题(二十五)—— 你手上还有没有其他的offer?

1.思路 主要考察你的意向度、时长竞争力和薪资空间&#xff0c;如果回答有offer&#xff0c;需要准备面试官追问还在考虑的原因。 2.参考解答 方式一&#xff1a; “目前我还没有其他的 offer。我一直非常专注于寻找真正适合我&#xff0c;并且能让我充分发挥自身能力和潜力的工…

spring boot(学习笔记第十二课)

spring boot(学习笔记第十二课) Spring Security内存认证&#xff0c;自定义认证表单 学习内容&#xff1a; Spring Security内存认证自定义认证表单 1. Spring Security内存认证 首先开始最简单的模式&#xff0c;内存认证。 加入spring security的依赖。<dependency>…