SimpleHTTPServer添加多个处理程序

时间:2016-05-11 12:25:15

标签: python

我不是Python程序员,但我使用的是SimpleHTTPServer,因为从一个文件夹启动Web服务器非常简单。

现在我需要提供一个json文件。我有以下python:

更新:我应该提到该文件应该从不同的路径提供。那就是我需要" localhost"提供index.html的文件夹和提供json文件的文件夹。

import BaseHTTPServer, SimpleHTTPServer
import ssl

httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.update: I should mention that the )
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True)
httpd.serve_forever()

我知道我需要再添加一个为该文件提供服务的处理程序,但是如何才能拥有多个处理程序。

提供文件的要求是:
1.必须使用标题'application / pkcs7-mime'发送 2.必须返回200个http代码

问题是如何为多个处理程序提供服务。提前致谢。 此致

2 个答案:

答案 0 :(得分:1)

您不需要多个处理程序。 SimpleHTTPRequestHandler使用文件的扩展名来猜测Content-type标头的适当mime类型。

在这种情况下,广告.p7m会映射到application/pkcs7-mime

因此,如果您使用扩展名.p7m命名您的json文件,则将使用所需的mime类型。

如果这不可行,那么您可以修改SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map并添加自己的扩展程序以映射到application/pkcs7-mime

import BaseHTTPServer, SimpleHTTPServer
import ssl

SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map['.my_ext'] = 'application/pkcs7-mime'
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='Certificates.pem', server_side=True)
httpd.serve_forever()

现在,扩展名为.my_ext的文件将以所需的mime类型提供。

如果这对您不起作用,那么您可以继承SimpleHTTPServer.SimpleHTTPRequestHandler并覆盖其guess_type()方法,以添加一些自定义方式来确定mime类型,可能是通过检查文件内容。

答案 1 :(得分:0)

您可以使用操作系统的符号链接(符号链接)功能将index.html和JSON文件链接到一个目录中。

在Unix系统上,它是这样的:

$ ln -s /path/to/index.html

$ ln -s /another/path/to/file.json

$ ls
file.json  index.html

$ python /your/script.py