2017-09-20 10 views
0

저는 내장 된 python3 http.server 모듈에 문제가 있습니다. 특히 BaseHTTPRequestHandler 클래스의 wfile.write() 메서드python3 HTTPServer/BaseHTTPRequestHandler 출력 스트림 문제

GET 요청을 사용하여 문자열로 미리 정의 된 html 양식을 보내려고합니다. 클라이언트로의 출력 스트림은 바이트 형 객체로 인코딩되어 클라이언트로 전송됩니다.

그러나 서버가 시작될 때 클라이언트 측에서 html 형식으로 렌더링되지 않습니다. 그것은 <pre> 태그로 싸여 있고 서식있는 텍스트로 표시됩니다. 여기

코드 : 그것은 밝혀졌다

#!/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() 

답변

0

단순히 GET 응답 방법 'Content-type' 헤더를 업데이트하는 것을 잊었다

self.send_header('Content-type', 'text/html; charset=utf-8')