首页 > 其他分享 >38.前端基础

38.前端基础

时间:2024-06-12 20:12:46浏览次数:22  
标签:38 HTTP 请求 前端 基础 响应 服务器 服务端 客户端

【一】前端和后端介绍

1)概念

前端:与用户进行交互,让用户输入数据以及展示响应数据的媒介

后端:在整个应用背后,不直接与用户打交道,对用户输入的数据进行校验和加密等逻辑的位置

2)介绍

HTML:网页的骨架,没任何样式

CSS:给骨架添加样式

JavaScript:控制页面的动态效果

3)前端框架

BOOTSTRAP、jQuery、Vue:提前封装好了很多操作,只需要按照固定的语法调用即可

【二】Web服务器的本质

1)从浏览器输入一个地址到看到页面信息过程

  • 浏览器先分析超链接中的URL是否规范
  • 浏览器向DNS请求解析ip地址
  • DNS将解析出的ip地址返回给浏览器
  • 浏览器与服务器建立TCP连接(80端口,三次握手)
  • 服务器接收到浏览器请求文档(GET、index.html)进行处理
  • 服务器给出响应,将文档index.html发送给浏览器,浏览器进行解封装
  • 浏览器渲染index.html中的内容(渲染页面)
  • 释放TCP连接(四次挥手)

【三】HTTP协议引入

1)起源

  • 不同服务端数据的组织策略千差万别,但是浏览器却需要做到能够统一处理
  • 最佳解决措施就是统一规定一个标砖:HTTP协议

2)概念

  • 规定了服务端与浏览器之间的数据交互格式及其他事项
  • 如果服务端遵循HTTP协议,就可以被浏览器正常访问并展示内容
  • 如果服务端不遵循HTTP协议,浏览器就不会正常访问和展示 但是不影响服务端

【四】HTTP协议

1)介绍

  • HTTP协议(HyperText Transfer Protocol,超文本传输协议)

  • 由蒂姆·伯纳斯-李于1989年为了推广互联网技术而推出的一种无状态网络应用协议

  • HTTP协议构建于TCP/IP协议之上,属于应用层协议

  • 主要用于传输 与超文本相关的资源文件,如HTML网页、CSS、JS、图片、视频、音频等

现在的HTTP协议基于数据是否加密,主要分两种

  • 之间构建与TCP协议之上

    • 没有进行加密传输数据的是HTTP协议
    • 默认通信端口是80端口
    • 用端口有:3000,5000,8000,8080等
  • 构建于TLS或SSL协议之上

    • 对数据使用SSL加壳加密传输数据的是HTTPS协议
    • 默认通信端口是443端口
    • 常用端口8443

2)特点

  • 基于请求、响应
    • 服务端永远不会主动给客户端发消息,必须是客户端先请求
  • 基于TCP、IP作用于应用层之上的协议
  • 无状态
    • 服务端不保存客户端状态
    • 客户端的每一次请求,对于服务端都是一次新的请求
  • 短连接
    • 不保持客户端于服务端之间的链接导通
    • 服务端响应数据之后立马断开连接
    • (长链接主要用于加好友聊天等业务)

3)请求格式和响应格式

1.请求格式

  • 客户端给服务端发送消息
    • 1.请求首行(请求方法 协议版本)
    • 2.请求头(一大堆k:v键值对)
    • 3.(换行不能省略)
    • 4.请求体(携带敏感数据:密码 身份照号...) 不是一直都有

2.响应格式

  • 服务端给客户端发送消息
    • 1.响应首行(响应状态码 协议版本)
    • 2.响应头(一大堆k:v键值对)
    • 3.(换行不能省略)
    • 4.响应体(给浏览器展示给用户看的页面内容)

4)协议报文详情

1.请求方法

  • 表示客户端希望服务器指定资源进行哪一种类型的操作
请求方法 描述 报文中是否包含请求体
GET 表示客户端希望从服务器中获取下载资源信息 False
POST 表示客户端希望上传文件或通过请求在服务器创建资源信息。 True
PUT 表示客户端希望修改或更新服务器资源(表示修改全部资源信息,例如数据表的一整个记录) True
PATCH 表示客户端希望修改或更新服务器资源(表示修改部分资源信息,例如数据表的一个记录里面某个属性值) True
DELETE 表示客户端希望删除或废弃服务器资源 False
OPTION 表示客户端希望获取服务器所支持的请求方法列表 False
HEAD 表示客户端希望获取服务器支持的跨域地址列表 False

2.请求头

  • 主要对客户端请求进行限制条件与补充说明
选项 描述
Host 指定客户端请求的服务器的域名和端口号。 www.baidu.com
Content-Type 告诉服务器,客户端请求携带的请求体数据的媒体类型信息(MIME类型)
User-Agent 告知服务器HTTP 客户端网络代理程序的版本信息,一般就是浏览器的版本信息。
Authorization 告知服务器客户端的Web认证信息。
Content-Length HTTP报文中请求体的大小,以字节为单位。
Referer 告诉服务器该网页是从哪个页面链接过来。也就是上一页页面的地址。
Accept 指定客户端能够接收并理解的媒体类型类型(MIME类型),用于表达希望服务端的返回资源格式。
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 gzip, deflate, br
Pragma 指定服务端控制缓存行为。http/1.0以前的字段。 Pragme: no-cache
Cache-Control 指定服务端控制缓存行为。http/1.1以后的字段。 Cache-Control: no-cache
Upgrade 向服务器请求在当前http协议的基础上升级采用新的某种传输协议以便服务器进行转换 常用于http协议升级到ws协议。
Connection 指定本次http通信结束以后,是否关闭TCP网络连接。如果设置持久连接,则可以在一次会话中,可以使用同一个TCP连接,进行多次的HTTP通信,提高效率。 持久连接,Connection: keep-alive 非持久连接,Connection: close

3.常见的MIME格式

类型 描述 别名
text/html HTML网页
application/json json文本 text/json
text/plain 纯文本,普通文本
text/xml xml文档
application/javascript js脚本 text/javascript
text/css css样式
image/png png格式图片
image/jpeg jpg格式图片
image/gif gif格式图片
application/x-gzip gzip格式压缩包
application/msword doc文档
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx文档
application/vnd.ms-excel xls文档
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx文档
application/pdf pdf文档
audio/mpeg mp3音频
video/mp4 mp4视频

4.响应状态码

  • 用于表达本次服务端在接收客户端请求之后的操作结果的成功或失败结果,由三位整数组成
状态码类型 描述
1xx 告诉客户端,本次请求,服务端还在持续处理中,并没有结束
2xx 告诉客户端,本次请求,服务端已经接收并成功受理了。
3xx 告诉客户端,服务端位置发生改变,希望客户端重定向访问跳转新的服务器地址进行请求
4xx 告诉客户端,本次请求有误,服务器无法处理。
5xx 告诉客户端,本次请求服务端在处理过程中服务端出错了。
  • 常见的HTTP状态码
状态码 响应信息 描述
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 服务器无法存储完成请求所必须的内容。

5.响应头

  • 主要是服务器返回的内容进行补充说明,并提供下一次请求的一些辅助信息
Content-Type 告知客户端,响应数据的MIME类型
Content-Length 告知客户端,响应数据的字节大小
Content-Encoding 告知客户端,响应数据采用的压缩格式
Server 告知客户端,响应服务器的名字或类型
Date 告知客户端,响应请求的时间
Location 告知客户端,实际要请求的资源地址(用于301或302进行页面跳转)
Cache-Control 告知客户端,响应数据的缓存机制
Refresh 告知客户端,要定时刷新的时间间隔
Connection 告知客户端,本次HTTP通信完成以后是否要保持TCP连接。
Transfer-Encoding 告知客户端,数据是以分块方式响应回来的。
Content-Disposition 告知客户端,以下载方式打数据的,格式:Content-Disposition: attachment;filename=文件名
Expires 告知客户端,响应数据的过期事件,-1表示马上过期,客户端不要缓存当前响应数据。
Retry-After 告知客户端,应该在多久之后再次发送请求。常见于服务端限流,或503中。
Access-Control-Allow-Origin 指定客户端通过哪些域名下的脚本可以访问服务器资源。
Access-Control-Allow-Methods 指定客户端通过哪些HTTP请求方法访问服务端资源。
Access-Control-Allow-Headers 指定客户端请求服务器的报文中,允许包含哪些请求头。
import socket

server = socket.socket()
ip = '127.0.0.1'
port = 8010
addr = (ip, port)
server.bind(addr)
server.listen(5)
conn, addr = server.accept()
while True:
    from_client_data = conn.recv(1024)
    from_client_data_str = from_client_data.decode()
    print(f'from_client_data_str: {from_client_data_str}')
    # 【1】响应首行 : 协议版本 响应状态码 换行(\r\n)
    response_line = "HTTP/1.1 200 OK\r\n"
    # 【2】响应头
    response_header = "Server:Python20ws/21.1\r\n"
    # 【3】换行
    response_blank = '\r\n'
    html_head = '<html>'
    # 【4】响应体
    response_content = "HelloWorld!"
    html_foot = '<html/>'
    response_body = html_head + response_content + html_foot
    # 【5】拼接响应数据并转为二进制发送
    to_client_data = response_line + response_header + response_blank + response_body
    to_client_data_bytes = to_client_data.encode()
    conn.send(to_client_data_bytes)

# GET / HTTP/1.1
# Host: 127.0.0.1:8010
# Connection: keep-alive
# sec-ch-ua: "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
# sec-ch-ua-mobile: ?0
# sec-ch-ua-platform: "Windows"
# Upgrade-Insecure-Requests: 1
# User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
# Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
# Sec-Fetch-Site: none
# Sec-Fetch-Mode: navigate
# Sec-Fetch-User: ?1
# Sec-Fetch-Dest: document
# Accept-Language: zh-CN,zh;q=0.9
# Accept-Encoding: gzip, deflate

标签:38,HTTP,请求,前端,基础,响应,服务器,服务端,客户端
From: https://www.cnblogs.com/Mist-/p/18244612

相关文章

  • 基础网络知识
    ip地址:IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。分为公有IP地址和私有IP地址,是一个32位的二进制数,通常用点分十进制表示。公有IP地址:公网IP在全世界只有一个,通过它直接访问因特网私网IP地址:专门为组织机......
  • 学习笔记——路由网络基础——路由优先级(preference)
    1、路由优先级(preference)路由优先级(preference)代表路由的优先程度。当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。路由来源的优先级值(Preference)越小代表加......
  • web安全-前端层面
    参考资料引荐https://blog.csdn.net/hack0919/article/details/130929154XSS简介跨站脚本攻击(Cross-SiteScripting,简称XSS)当用户将恶意代码注入网页时,其他用户在浏览网页时就会受到影响攻击主要方向主要用于盗取cookie凭据,钓鱼攻击,流量指向等攻击类型反射型xss......
  • 记录--前端实现文件预览(word、excel、pdf、ppt、xmind、 音视频、图片、文本) 国际化
    ......
  • 二级web基础操作题练习(6)——嵌入Javascript代码
    -----要求----- 用JavaScript编写如图1所示页面,当在第一个文本框中输入URLhttp://test.cn/index.jsp?key0=0&key1=1&key2=2,点击按钮“解析参数“后,在下面的三个文本框中分别显示解析出来的参数,如图2所示。图1图2 -----代码示例-----<html><head><!--设置字符编......
  • 字节跳动基础架构两篇论文入选 VLDB 2024
    2024年8月26至30日,VLDB2024将在中国广州举行。字节跳动基础架构云原生中间件团队、批式计算团队研究成果分别被VLDB2024接收,并受邀进行现场报告。VLDB(InternationalConferenceonVeryLargeDataBases)是数据库三大国际顶级学术会议之一,也是中国计算机学会(CCF)推......
  • pythonocc基础:OCC.Core.TopAbs 类简介
    在PythonOCC库中,OCC.Core.TopAbs模块定义了一系列枚举类型,这些枚举类型代表了拓扑形状的不同类别(Topology)。这些类别是构建和操作三维几何模型的基础,特别是在处理布尔运算、几何约束、参数化设计等复杂任务时。TopAbs类提供了统一的接口来识别和区分不同的拓扑元素,是OpenCASCAD......
  • 《UML基础、案例与应用》习题记录-第12章
    部分习题,使用visio或plantuml,非正确答案,仅供参考,欢迎评论,谢绝转载。第12章构件图12.8.2习题1.构件图       2. ......
  • HTML基础1.1
    HTML基础1结构html数据库\Windowsserver网络设备(华为/H3C)linux云计算html站点站点新建站点站点名称shengbang本地站点文件夹d:\shengbang(需要新建)高级设置默认图像文件夹d:\shengbang\images(需要新建)HTML文档的结构<html></html><head>......
  • 六月前端及踩坑记录
    六月记录vuehtml根据字符换行vue中ant组件allowClear不生效vuehtml根据字符换行<spanv-html="changeWrap(data)"></span>//分号换行changeWrap(content){content=content.replace(/;/g,";</br>");content=content.......