8

I had found written in python, a very simple http server, it's do_get method looks like this:

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)

It works ok, besides the fact - that it is not serving any css files ( it is rendered without css). Anyone got a suggestion / solution for this quirk?

Best regards, praavDa

2
  • Quick suggestion: Google cherrypy. Commented Jun 3, 2009 at 21:45
  • warning old thread Try storing the .css file(s) in the same directory where your html file is located. Commented Apr 2, 2016 at 8:03

3 Answers 3

10

You're explicitly serving all files as Content-type: text/html, where you need to serve CSS files as Content-type: text/css. See this page on the CSS-Discuss Wiki for details. Web servers usually have a lookup table to map from file extension to Content-Type.

Sign up to request clarification or add additional context in comments.

1 Comment

In python the module mimetypes has the lookup table
6

it seems to be returning the html mimetype for all files:

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

Also, it seems to be pretty bad. Why are you interested in this sucky server? Look at cherrypy or paste for good python implementations of HTTP server and a good code to study.


EDIT: Trying to fix it for you:

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)

1 Comment

I am using this sucky one, because it is the topic of my project - I need to write http server in python. Thanks for the response.
2

See SimpleHTTPServer.py in the standard library for a safer, saner implementation that you can customize if you need.

1 Comment

Thank You for this link - I now know a little more about how I can write my own.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.