2009-06-03 18 views
5

que había encontrado escrito en Python, un servidor HTTP muy simple, es do_get método es el siguiente:personalizado simple servidor HTTP de Python no servir archivos CSS

def do_GET(self): 
     try: 
      self.send_response(200) 
      self.send_header('Content-type', 'text/html') 
      self.end_headers(); 
      filepath = self.path 
      print filepath, USTAW['rootwww'] 

      f = file("./www" + filepath) 
      s = f.readline(); 
      while s != "": 
       self.wfile.write(s); 
       s = f.readline(); 
      return 

     except IOError: 
      self.send_error(404,'File Not Found: %s ' % filepath) 

Funciona bien, además del hecho - que es no está sirviendo ningún archivo css (se procesa sin css). ¿Alguien tiene una sugerencia/solución para esta peculiaridad?

Saludos, praavDa

+0

Sugerencia rápida: Google cherrypy. – Triptych

+0

** advertencia anterior hilo ** Trate de almacenar los archivos .css en el mismo directorio donde se encuentra su archivo html. – noobninja

Respuesta

6

parece estar regresando los MIME HTML para todos los archivos:

self.send_header('Content-type', 'text/html') 

Además, parece ser bastante malo. ¿Por qué estás interesado en este servidor sucky? Mire cherrypy o pegue para las buenas implementaciones de python del servidor HTTP y un buen código para estudiar.


EDITAR: Tratar de corregir por usted:

import os 
import mimetypes 

#... 

    def do_GET(self): 
     try: 

      filepath = self.path 
      print filepath, USTAW['rootwww'] 

      f = open(os.path.join('.', 'www', filepath)) 

     except IOError: 
      self.send_error(404,'File Not Found: %s ' % filepath) 

     else: 
      self.send_response(200) 
      mimetype, _ = mimetypes.guess_type(filepath) 
      self.send_header('Content-type', mimetype) 
      self.end_headers() 
      for s in f: 
       self.wfile.write(s) 
+3

Estoy usando este sucky, porque es el tema de mi proyecto - Necesito escribir el servidor http en python. Gracias por la respuesta. – praavDa

9

Usted está sirviendo de forma explícita todos los archivos como Content-type: text/html, donde tiene que servir a los archivos CSS como Content-type: text/css. Ver this page on the CSS-Discuss Wiki para más detalles. Los servidores web suelen tener una tabla de búsqueda para asignar desde la extensión de archivo a Content-Type.

+3

En python el módulo mimetypes tiene la tabla de búsqueda –

2

Ver SimpleHTTPServer.py en la biblioteca estándar para una aplicación más seguro, más sano que se puede personalizar si es necesario.

+0

Gracias por este enlace: ahora sé un poco más sobre cómo puedo escribir el mío. – praavDa

Cuestiones relacionadas