当前位置: 首页 > article >正文

Python实现Http Server及Https Server

目录

一、Python实现Http Server

1、实现Http Server

2、通过浏览器测试Http Server

3、通过Python实现客户端测试Http Server

二、Python实现Https Server

1、利用HTTPServer实现一个简单的Https Server

2、SSL生成证书及密码


一、Python实现Http Server

1、实现Http Server

在Python中,可以很容易地创建一个简单的HTTP服务器来服务于静态文件或执行一些基本的HTTP请求处理。这通常通过http.server(在Python 3.x中))模块来完成。

虽然http.server模块提供了一个方便的方式来快速启动一个HTTP服务器,但如果需要更复杂的请求处理或动态生成内容,需要编写一个自定义的HTTP服务器。

首先,确保你正在使用Python 3.x版本。然后继承BaseHTTPRequestHandler类,自定义RequestHandler类,实现一个简单的Http Server,以线程方式启动Server,响应GET和POST请求。解析请求中的参数并回复。HTTP服务器监听的端口号。如果不指定,它将默认为80。

以下是一个使用Python 3.x创建HTTP服务器的例子。


from http.server import BaseHTTPRequestHandler, HTTPServer
from socketserver  import ThreadingMixIn
import ssl
import sys, os
from urllib import parse
from urllib import request

class RequestHandler(BaseHTTPRequestHandler):
    
    def do_POST(self):
        datas = self.rfile.read(int(self.headers['content-length']))
        param = datas.decode('utf-8')
        self.send_content(param.encode('utf-8'),200)

    def do_GET(self):
        self.full_path = os.getcwd() + self.path
        param = dict(parse.parse_qsl(self.full_path))
        if 'mypara' in param.keys():
            self.send_content(param['mypara'].encode('utf-8'),200)
        else:
            msg = '<xml><meta charset="UTF-8">Hello World </xml>'
            self.send_content(msg.encode('utf-8'),200)
        
    def send_content(self, page, status=200):
        self.send_response(status)
        self.send_header("Content-type",

http://www.kler.cn/a/282628.html

相关文章:

  • Spark RDD sortBy算子什么情况会触发shuffle
  • 探秘Spring Boot中的@Conditional注解
  • 【3D Slicer】的小白入门使用指南四
  • AI大模型(二):AI编程实践
  • Java I/O(输入/输出)——针对实习面试
  • 使用Python实现对接Hadoop集群(通过Hive)并提供API接口
  • Kafka的Offset(偏移量)详解
  • 爆改YOLOv8 | 利用CPA-Enhancer提高低照度物体检测(适用于雨,雪,雾天)
  • hadoop的sbin
  • Redis 实现哨兵模式
  • 买入股票的思维法
  • [米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-18 SPI接口ADC采集驱动设计
  • 操作系统信号量
  • 【数据结构-二维前缀和】力扣1314. 矩阵区域和
  • Linux学习(15)-网络编程:滑动窗口、拥塞控制、udp
  • HTML 总结
  • 数据挖掘之分类算法
  • Java框架Spring(一)
  • 向量数据库Faiss的搭建与使用|Faiss|向量数据库|高效检索|机器学习|大规模数据
  • 大模型Prompt提示设计简介(2):有效的建议
  • 在C语言中使用POSIX线程库(pthread)实现多线程编程
  • Redis多线程特性
  • CSS中禁用DOM事件
  • OpenCV绘图函数(12)绘制直线函数 line()的使用
  • 数学基础 -- 线性代数之向量基本概念
  • Flask+LayUI开发手记(五):树型表格实现数据展示与编辑