基本HTTP服务器没有完全工作,也没有抛出错误

时间:2017-06-01 17:07:30

标签: python-3.x http-headers httpserver

我已经开始在python中探索HTTP服务器了,我想做一些非常简单的事情。这个想法就是如果一个客户端连接到“我的ip”/ admin它会在网页上显示他的标题,如果不是它只是使用默认的do_GET()函数。

我的代码:

#!/usr/bin/env python3

import http.server
import socketserver

class HttpHandler(http.server.SimpleHTTPRequestHandler):

    def do_GET(self):
        if self.path == "/admin":
            self.wfile.write("This page is for administrators only".encode())
            self.wfile.write(str(self.headers).encode())
        else:
            http.server.SimpleHTTPRequestHandler.do_GET(self)

http_server=socketserver.TCPServer(("",10002),HttpHandler)
http_server.serve_forever()

由于某种原因,我看不到标题(除非我打印了self.headers以在终端中显示它们)它甚至没有抛出任何错误,所以我有点迷失在这里。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的,所以我提出的解决方案(对于任何有兴趣或可能与此线程有相同疑问的朋友)是这样的:

#!/usr/bin/env python3

import http.server
import socketserver

class HttpHandler(http.server.SimpleHTTPRequestHandler):

    def do_GET(self):
        if self.path == "/admin":
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.end_headers()
            self.wfile.write(bytes("<html> <head><title> Testing </title> </head><body><p> This page is only for administrators</p>"+str(self.headers)+"</body>", "UTF-8"))
        else:
            http.server.SimpleHTTPRequestHandler.do_GET(self)

http_server=socketserver.TCPServer(("",10001), HttpHandler)
http_server.serve_forever()