2017-06-01 4 views
0

Ich habe begonnen, HTTP-Server in Python zu erkunden, und ich wollte etwas sehr einfaches tun. Die Idee ist nur, wenn ein Client eine Verbindung zu "my ip"/admin herstellt, zeigt er seinen Header auf der Webseite an, wenn er nicht die Standardfunktion do_GET() verwendet.Basic HTTP Server nicht voll funktionsfähig und keine Fehler werfen

Mein Code:

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

ich aus irgendeinem Grunde nicht auf die Header kann (es sei denn ich einen Druck des self.headers tun, um sie in dem Terminal zeigen) es nicht einmal wirft Fehler also bin ich hier irgendwie verloren.

Danke für die Hilfe

Antwort

0

Ok, so dass die Lösung kam ich mit (für alle Interessierten oder Macht Freund dieses Themas mit den gleichen Zweifel), ist dies:

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