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",