Я хотел бы написать простой HTTP-сервер, поэтому я начну с этого:
import socket
def create_message (html_txt) :
message = 'HTTP/1.1\nContent-Type: text/html\n\n' + html_txt
return message.encode()
class http_server :
def __init__ (self) :
self.routes = {}
def add_routes (self, route, message) :
self.routes[route] = message
def run(self) :
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(("localhost", 12345))
while 1 :
serversocket.listen(1)
(clientsocket, address) = serversocket.accept()
print("HTTP Request receive")
message = clientsocket.recv(1024).decode()
key = message.split()[1]
print('Message :', message)
print('The key is :', key)
if key in self.routes.keys() :
sent = clientsocket.send(create_message(self.routes[key]))
print("HTTP Response send")
С этой тестовой программой:
import http_server
server = http_server.http_server()
server.add_routes('/', "<!DOCTYPE html>\n<html>\n<body>\n<b>Hello World</b>\n</body>\n</html>")
server.add_routes('/toto', "<!DOCTYPE html>\n<html>\n<body>\n<b>Hello Toto</b>\n</body>\n</html>")
server.run()
Но когда я хотел бы / или / toto путь, я иногда получаю запрос /favicon.ico, тогда как я не помещаю его в HTML сообщение
Как ответить (или удалить) этот запрос?