[Python] Error Code 403

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

Ich habe gerade versucht, meinen ersten Python Webserver laufen zu lassen.
Es existiert ein Ordner mit einem .py File das einen CGI-fähigen HTTP-Server enthält:

Code: Alles auswählen

import os
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
srvraddr=("",8080)
cgisrv=HTTPServer(srvraddr,CGIHTTPRequestHandler)
cgisrv.serve_forever()
Wenn ich den starte, stellt er auch eine Verbindung her und unter http://localhost:8080
erscheint folgende Ausgabe

Code: Alles auswählen

* cgi-bin/
* httpd.py
In cgi-bin/ liegt mein File HelloWorld.py, welches so aussieht:

Code: Alles auswählen

import os
print "Content-Type: text/html"
print
print "<H1>Hello World</H1>"
Wird http://localhost:8080/cgi-bin/ oder http://localhost:8080/cgi-bin/HelloWorld.py im Browser eingegeben erscheint jedoch

Code: Alles auswählen

Error response
Error code 403.
Message: CGI script is not a plain file ('/cgi-bin/').
Error code explanation: 403 = Request forbidden -- authorization will not help.
Warum denn nur?!
Danke für jede Hilfe

Edit (Leonidas): Codes in Tags gesetzt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Vielleicht hilft dir das ja etwas:

Code: Alles auswählen

import os
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler

cgihandle = CGIHTTPRequestHandler
print os.getcwd()
cgihandle.cgi_directories += [os.path.join(os.getcwd(), "cgi-bin")]
print cgihandle.cgi_directories

print os.path.join(os.getcwd(), "cgi-bin")
srvraddr = ("", 8080)
cgisrv = HTTPServer(srvraddr, cgihandle)
cgisrv.serve_forever()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

Habs grad getestet, ändert jedoch an der Fehlermeldung leider nichts :cry:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also wenn ich es als hw.py in die URL Adresszeite eingebe, nachdem ich im cwd einen Ordner cgi-bin mit hw.py drin habe, würde das bei mir (theoretisch) gehen (es scehitert bei mir an anderen Gründen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

komisch, ich verstehs nicht. Hast auch keine Ahnung woran es liegen könnte?
Es müsste ja egal sein, wo das Verzeichnis vom Webserver in meinem Filesystem liegt, oder?! Ist nur wichtig, dass ich darin das Webserverfile liegt und der cgi-bin Ordner darin existiert und dort die auszuführenden Files liegen, oder?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst dem CGI Server ja angeben, wo er nach CGIs schauen soll, per cgi_directories, das habe ich ja gemacht. Was gibt er bei dir denn für eine Fehlermeldung, genau die gleiche wie beim letzten mal. DU musst das Script aus dem gleichen Verzeichnis starten, wo auch cgi-bin drin ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

ja, er gibt noch dieselbe Fehlermeldung aus. Und ja, ich starte es aus demselben Verzeichnis. Ja und bei mir heißt das Verzeichnis ja auch cgi-bin.
joe

Hi!
Seltsam ist, daß du bei http://localhost:8080/cgi-bin/HelloWorld.py die fehlermeldung Message: CGI script is not a plain file ('/cgi-bin/') bekommst und nicht Message: CGI script is not a plain file ('/cgi-bin/HelloWorld.py'). Ist das wirklich so?
Daß http://localhost:8080/cgi-bin/ diese fehlermeldung erzeugt, ist richtig.
BTW: Auf welchem OS läuft das?
joe
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

Oh, Du hast recht. Die von mir beschriebene Fehlermeldung kommt wirklich nur, wenn ich http://localhost:8080/ eingeb und nicht bei http://localhost:8080/HelloWorld.py
Wenn ich http://localhost:8080/HelloWorld.py direkt eingebe, lädt men Browser einfach ewig und zeigt gar nichts an. Steht immer nur "Waiting for localhost..."
Ich hab Windows XP Home als OS.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Was sagt der log im Server?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

keine Ahnung, wo steht das Logfile?!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Es bleibt doch das DOS-Fenster auf und darin werden die LOG-Einträge aufgelistet...
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

nee, ich führ nichts in nem dos Fenster aus. Ich hab das Python - Prog einfach in meinem Interpreter gestartet. War wohl falsch?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Na du solltest es in cmd aufmachen, per python httpd.py
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ravebaby
User
Beiträge: 14
Registriert: Donnerstag 24. Februar 2005, 10:32
Kontaktdaten:

Oh wie Panne, ich habs!!!!!
Ich hatte nen Leerzeichen im Ordner wo der Server drin lag. Oh verflucht.... :evil: und dafür soviel Zeit geopfert!!!!
Antworten