码农知识堂 - 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服务器类的初始化方法添加一个端口号参数,用于绑定端口号

    • 示例代码

      • 在这里插入图片描述
  • 相关阅读:
    排序算法简述
    Android系统的启动流程
    laravel 自定义邮箱验证过期时间
    【JVM】字节码文件的组成部分
    【Linux学习】高并发服务器 socket+epoll封装 服务器/客户端举例
    【MySQL】查询优化
    力扣 6181. 最长的字母序连续子字符串的长度
    MySQL - 索引优化
    所求和问题
    基于百度API的车牌识别计费系统
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/125979639
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号