Seite 1 von 1

[Python] Error Code 403

Verfasst: Donnerstag 24. Februar 2005, 10:34
von Ravebaby
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.

Verfasst: Donnerstag 24. Februar 2005, 15:15
von Leonidas
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()

Verfasst: Donnerstag 24. Februar 2005, 15:20
von Ravebaby
Habs grad getestet, ändert jedoch an der Fehlermeldung leider nichts :cry:

Verfasst: Donnerstag 24. Februar 2005, 15:42
von Leonidas
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).

Verfasst: Donnerstag 24. Februar 2005, 15:54
von Ravebaby
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?!

Verfasst: Donnerstag 24. Februar 2005, 16:23
von Leonidas
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.

Verfasst: Donnerstag 24. Februar 2005, 16:30
von Ravebaby
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.

Verfasst: Donnerstag 24. Februar 2005, 17:09
von 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

Verfasst: Donnerstag 24. Februar 2005, 17:38
von Ravebaby
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.

Verfasst: Donnerstag 24. Februar 2005, 18:49
von Leonidas
Was sagt der log im Server?

Verfasst: Donnerstag 24. Februar 2005, 19:46
von jens

Verfasst: Donnerstag 24. Februar 2005, 19:47
von Ravebaby
keine Ahnung, wo steht das Logfile?!

Verfasst: Donnerstag 24. Februar 2005, 19:48
von jens
Es bleibt doch das DOS-Fenster auf und darin werden die LOG-Einträge aufgelistet...

Verfasst: Donnerstag 24. Februar 2005, 20:45
von Ravebaby
nee, ich führ nichts in nem dos Fenster aus. Ich hab das Python - Prog einfach in meinem Interpreter gestartet. War wohl falsch?!

Verfasst: Donnerstag 24. Februar 2005, 20:55
von Leonidas
Na du solltest es in cmd aufmachen, per python httpd.py

Verfasst: Donnerstag 24. Februar 2005, 21:36
von Ravebaby
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!!!!