码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • HTTP协议和静态Web服务器


    5. HTTP协议和静态Web服务器

    文章目录

      • 5. HTTP协议和静态Web服务器
        • 5.1 HTTP 协议
          • 5.1.1 作用
          • 5.1.2 浏览器访问web服务器的通信过程
        • 5.2 URL
          • 5.2.1 组成部分
        • 5.3 查看HTTP协议的通信过程
          • 5.3.1 Google Chrome浏览器
        • 5.4 HTTP请求报文
          • 5.4.1 get方式
          • 5.4.2 post方式
          • 5.4.3 组成
        • 5.5 HTTP响应报文
          • 5.5.1 HTTP状态码
          • 5.5.2 组成
        • 5.6 搭建Python自带静态web服务器
          • 5.6.1 静态web服务器
        • 5.7 静态web服务器
          • 5.7.1 返回固定页面数据
          • 5.7.2 返回指定页面数据
          • 5.7.3 多任务版web服务器程序
          • 5.7.4 面向对象开发
          • 5.7.5 命令行启动动态绑定端口号

    5.1 HTTP 协议

    HyperText Transfer Protocol 超文本传输协议

    传输 HTTP 协议格式的数据是基于 TCP 传输协议的,发送数据之前需要先建立连接。

    5.1.1 作用

    • 规定了浏览器和 Web 服务器通信数据的格式,也就是说浏览器和web服务器通信需要使用http协议

    5.1.2 浏览器访问web服务器的通信过程

    • 在这里插入图片描述

    5.2 URL

    Uniform Resoure Locator 统一资源定位符

    • 网络资源地址

      • 网址

    5.2.1 组成部分

    • 协议部分
    • 域名部分
    • 资源路径部分
    • 查询参数部分(可选)

    5.3 查看HTTP协议的通信过程

    5.3.1 Google Chrome浏览器

    • 开发者工具的标签

      • 元素(Elements):用于查看或修改HTML标签

      • 控制台(Console):执行js代码

      • 源代码(Sources):查看静态资源文件,断点调试JS代码

      • 网络(Network):查看http协议的通信过程

        • header选项

          • General: 主要信息
          • Response Headers: 响应头
          • Request Headers: 请求头
        • Response选项

          • 查看响应体信息

    5.4 HTTP请求报文

    5.4.1 get方式

    • 获取web服务器数据

    5.4.2 post方式

    • 向web服务器提交数据

    5.4.3 组成

    • 请求行

      • 请求方式
      • 请求资源路径
      • HTTP协议版本
    • 请求头

    • 空行

    • 请求体
      在这里插入图片描述

    5.5 HTTP响应报文

    5.5.1 HTTP状态码

    • 用于表示web服务器响应状态的3位数字代码
    • 在这里插入图片描述

    5.5.2 组成

    • 响应行

      • HTTP协议版本
      • 状态码
      • 状态描述
    • 响应头

    • 空行

    • 响应体

    5.6 搭建Python自带静态web服务器

    5.6.1 静态web服务器

    • 可以为发出请求的浏览器提供静态文档的程序

    python3 -m http.server 端口号

    端口号默认8000

    在这里插入图片描述

    5.7 静态web服务器

    5.7.1 返回固定页面数据

    • 编写一个TCP服务端程序

    • 获取浏览器发送的http请求报文数据

    • 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器

    • HTTP 响应报文数据发送完成后,关闭服务于客户端的套接字

    • 示例代码

      • 在这里插入图片描述

    5.7.2 返回指定页面数据

    • 获取用户请求资源的路径

    • 根据请求资源的路径,读取指定文件的数据

    • 组装指定文件数据的响应报文,发送给浏览器

    • 判断请求的文件在服务端不存在,组装404状态的响应报文,发送给浏览器

    • 示例代码

      • 在这里插入图片描述

    5.7.3 多任务版web服务器程序

    • 当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞

    • 把创建的子线程设置成为守护主线程,防止主线程无法退出

    • 示例代码

      • 在这里插入图片描述

    5.7.4 面向对象开发

    • 把提供服务的Web服务器抽象成一个类(HTTPWebServer)

    • 提供Web服务器的初始化方法,在初始化方法里面创建socket对象

    • 提供一个开启Web服务器的方法,让Web服务器处理客户端请求操作

    • 示例代码

      • 在这里插入图片描述

    5.7.5 命令行启动动态绑定端口号

    • 获取执行python程序的终端命令行参数

    • 判断参数的类型,设置端口号必须是整型

    • 给Web服务器类的初始化方法添加一个端口号参数,用于绑定端口号

    • 示例代码

      • 在这里插入图片描述
  • 相关阅读:
    OSPF常用配置和常用的查看命令
    【Debug】关于 nginx 上传文件时出现 413 及 500 错误码解决方法
    Gem5模拟器之scon和模拟脚本时具体在做啥?
    如何做好持续交付中的多环境配置管理?
    华为机试 - 字符串排序
    Shell脚本<<eeooff的使用
    Java项目:药品商城系统(java+SSM+JSP+jQuery+Mysql)
    【QT】Qt中Websocket的使用
    前端Vue入门-day08-vant组件库
    数字IC后端实现 |TSMC 12nm 与TSMC 28nm Metal Stack的区别
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/125979639
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号