python3 HTTPServer / BaseHTTPRequestHandler输出流问题

时间:2017-09-20 07:51:36

标签: python-3.6 pre basehttpserver basehttprequesthandler

我遇到了内置python3 http.server模块的问题。具体来说,是BaseHTTPRequestHandler类中的wfile.write()方法。

我正在尝试将预定义为字符串的html表单发送给具有GET请求的客户端。到客户端的输出流被编码为类似字节的对象并传输到客户端。

但是,在客户端启动服务器时,它不会呈现为html格式。它最终被包装到#!/usr/bin/env python3 from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.parse import parse_qs form = '''<!DOCTYPE html> <title>Message Board</title> <form method="POST" action="http://localhost:8000/"> <textarea name="message"></textarea> <br> <button type="submit">Post it!</button> </form>''' class MessageHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/plain; charset=utf-8') self.end_headers() self.wfile.write(form.encode()) if __name__ == '__main__': server_address = ('', 8000) httpd = HTTPServer(server_address, MessageHandler) httpd.serve_forever() 标签中并显示为预先格式化的文本。

以下是代码:

{{1}}

1 个答案:

答案 0 :(得分:0)

原来我忘了在GET响应方法

中更新'Content-type'标题
self.send_header('Content-type', 'text/html; charset=utf-8')