Seite 1 von 1

Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Dienstag 17. August 2010, 17:40
von alpha
Hallo Pythonforum,

ich habe hier gerade zum Spass den minimal Httpserver in python auf meinem Uraltlinuxpc aufgesetzt.

Code: Alles auswählen

from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
serveradresse = ("192.168.28.3", 8080)
server = HTTPServer(serveradresse, CGIHTTPRequestHandler)
print "Server gestartet"
server.serve_forever()
Dann habe ich ein index.html erstellt mit einem Link auf einen Bilderordner

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY LANG="de-DE" DIR="LTR">
<P>Willkommen zu meiner Seite</P>
<P><A HREF="/bilder">zu bilder</A></P>
</BODY>
</HTML>
Soweit so gut. Klicke ich nun auf den Link wechselt mein Browser in das Bilderverzeichnis.
Klicke ich aber nun ein Bild an, kann es nicht geladen werden weil er noch im Rootpfad sucht.
Wie kann ich ihm das abgewöhnen?
Danke für eure Hilfe.

Gruß
alpha

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Dienstag 17. August 2010, 19:28
von lutz.horn
alpha hat geschrieben:Klicke ich aber nun ein Bild an, kann es nicht geladen werden weil er noch im Rootpfad sucht.
Dieses Verhalten kann ich nicht reproduzieren. Alle Ordner und Verzeichnisse werden korrekt aufgelöst.

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Dienstag 17. August 2010, 21:06
von alpha
Hallo lutz.horn,

hast du ein mal ein neues Verzeichnis angelegt?
Wenn ich mit der Maus darüber fahre wird schon der falsche Pfad angezeigt.
Also nur http://meinrechner/bildname.jpg und nicht
http://meinrechner/bilder/bildname.jpg

Gruß
alpha

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Mittwoch 18. August 2010, 07:44
von lutz.horn
Bei mir funktioniert sowohl lokal als auch online (http://www.dev-random.de:9090/) alles korrekt.

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Mittwoch 18. August 2010, 09:19
von alpha
Hallo Lutz,

ich verwende Python 2.6.4.
Du kannst das Verhalten auf
http://duro.blogsite.org:8080

nachvollziehen.
Nun gilt es nur noch herauszufinden was bei Dir besser ist als bei mir :)

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Mittwoch 18. August 2010, 09:37
von Defnull
"/bilder" + "p2190001.jpg" = "/p2190001.jpg"
"/bilder/" + "p2190001.jpg" = "/bilder/p2190001.jpg"

PS: Das Pfade mit und ohne abschließendem Slash von manchen Bibliotheken und Servern gleich behandelt werden, ist ein Unding. Hier kann man sehr schön sehen, warum man so etwas nicht machen sollte.

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Mittwoch 18. August 2010, 09:38
von lutz.horn
Der Unterschied besteht in dem fehlenden "/" als letztes Zeichen des Pfades:

* http://duro.blogsite.org:8080/bilder
* http://duro.blogsite.org:8080/bilder/

Im zweiten Fall funktioniert es. Warum allerdings im Deinem Fall das "/" nicht angehängt wird, ist mir unklar.

Re: Eigener HTTP-Server mit BaseHTTPServer

Verfasst: Mittwoch 18. August 2010, 10:12
von alpha
Faszinierend.. Du hast recht.. Wenn ich lokal auf den Server zugreife funktioniert es.
Es könnte auch am Browser liegen.

Danke für Deine Hilfe

alpha