首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3 HTTPServer/BaseHTTPRequestHandler输出流问题

python3 HTTPServer/BaseHTTPRequestHandler输出流问题
EN

Stack Overflow用户
提问于 2017-09-20 07:51:36
回答 1查看 2.8K关注 0票数 0

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

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

但是,在客户端,当服务器启动时,它不会呈现为html表单。最后,它被包装到<pre>标记中,并显示为预先格式化的文本。

以下是代码:

代码语言:javascript
复制
#!/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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 07:27:05

原来,我只是忘了在GET响应方法中更新'Content-type'

代码语言:javascript
复制
self.send_header('Content-type', 'text/html; charset=utf-8')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46316285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档