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-Length HTTP报文中请求体的大小,以字节为单位。
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 告诉客户端,本次请求服务端在处理过程中服务端出错了。
常见状态码
状态码 响应信息 描述
101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用升级协议来完成请求。
200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。常用于GET,PUT或PATCH
201 Created 请求已成功,请求的资源已经创建成功或更新完成,常用于POST,PUT或PATCH
204 No Content 请求已成功,但是没有任何内容返回。常用于DEELTE
301 Moved Permanently 永久重定向,表示当前客户端请求的资源地址已经永久发生改变。
302 Move Temporarily 临时重定向,表示当前客户端请求的资源地址还存在,但是访问客户端达不到访问资源的条件,所以暂时无法访问。
304 Not Modified 表示本次客户端请求的资源,并非来自服务端,而是本地缓存。如果web项目有做了客户端缓存,一般静态文件都会出现304
305 Use Proxy 被请求的资源必须通过指定的代理才能被访问。
307 Temporary Redirect 请求的资源临时从不同的URI 响应请求。
400 Bad Request 本次请求,报文语义有误或请求参数有误,当前请求无法被服务器理解。
401 Unauthorized 本次请求,需要需要用户验证,但用户并没有提供认证。
403 Forbidden 服务器已经理解请求,但是拒绝执行它。一般是因为没有权限导致的。
404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现,请求路径不存在。
405 Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源。使用了错误的请求方法。
500 Internal Server Error 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。就是服务端的代码报错了。
502 Bad Gateway 网关宕机,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。一般就是大量访问请求导致服务器瘫痪或宕机了。
503 Service Unavailable 网关过载,由于临时的服务器维护或者过载,服务器当前无法处理请求。
504 Gateway Timeout 网关超时,作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器(例如DNS)收到响应。
507 Insufficient 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_body
    sock.send(data1.encode())
​
相关推荐
丁总学Java29 分钟前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
懒羊羊大王呀39 分钟前
CSS——属性值计算
前端·css
无咎.lsy1 小时前
vue之vuex的使用及举例
前端·javascript·vue.js
fishmemory7sec1 小时前
Electron 主进程与渲染进程、预加载preload.js
前端·javascript·electron
fishmemory7sec1 小时前
Electron 使⽤ electron-builder 打包应用
前端·javascript·electron
豆豆2 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
twins35203 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky3 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~3 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常3 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺