Création d'un site web (python - débutant)

Affiche "index of" au lieu d'afficher le site

a marqué ce sujet comme résolu.

Bonjour, ci joint 2 fichiers simple: server.py et hello.py

#coding:utf-8
import http.server

port = 8000
address = ("", port)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/home/kali/cgi-bin"]  # Répertoire CGI
httpd = server(address, handler)
print(f"Serveur démarré sur le port {port}")
httpd.serve_forever()

contenu hello.py

#!/usr/bin/env python
#coding:utf-8
import cgi
ok = "avance"
print("Content-Type: text/html")
print(ok)

en changeant le handler.cgi_directories par "/" la racine j’obtiens l’érreur: Error code: 403 Message: CGI script is not a plain file ('//'). Error code explanation: 403 - Request forbidden -- authorization will not help.

je ne pense pas que ça soit un problème de droits (chmod effectué)

+0 -0

Bonjour,

Merci d’indiquer un titre plus adéquat, de bien mettre en forme les bouts de code et de décrire plus précisément le problème rencontré et les pistes de solution déjà explorées.

Enfin, un bonjour ne fait pas de mal.

+1 -0

Bonjour je suis Débutant en python j’ai crée un server web en python qui devrai afficher le "site" contenu dans le fichier hello.py via cgi mais il affiche un index of au lieu d’afficher le site

désolé je ne savais pas rangé le code…

ci joint 2 fichiers simple: server.py et hello.py

#coding:utf-8 import http.server

port = 8000 address = ("", port)  
server = http.server.HTTPServer  
handler = http.server.CGIHTTPRequestHandler  
handler.cgi_directories = ["/home/kali/cgi-bin"] # Répertoire CGI  
httpd = server(address, handler) 
print(f"Serveur démarré sur le port {port}") 
httpd.serve_forever() 

contenu hello.py

#!/usr/bin/env python #coding:utf-8  
import cgi  
ok = "avance"  
print("Content-Type: text/html")   
print(ok) 

en changeant le handler.cgi_directories par "/" la racine j’obtiens l’érreur: Error code: 403 Message: CGI script is not a plain file (’//’). Error code explanation: 403 - Request forbidden — authorization will not help.

je ne pense pas que ça soit un problème de droits (chmod effectué)`

+0 -0

Salut,

Si tu veux créer un site web je te conseille plutôt de regarder du côté de Flask (c’est sûrement un peu plus simple).

Pourrais-tu faire un petit schéma de la structure globale de ton projet (pour voir où se situe le fichier CGI par rapport à ton programme, par exemple) ?

Exemple :

Projet | —Images |  — fleur.jpg |  — orange.png | —Scripts |  — main.py |  — init.py

Bonne journée

PS : avec le second <> du menu, tu peux mettre en forme ton code et le colorer… Et vérifie que toutes tes lignes sont bien alignées !

merci pour le conseille concernant l’alignement; je n’ai pas de but spécifique si ce n’est d’apprendre python j’ai de bonne connaissance en system/reseaux et cela me serai utile…

structure:(à la racine j’ai le rep home dans le rep home j’ai le rep kali le script server.py est dans le rep kali dans le rep kali j’ai le rep cgi-bin le script hello.py est dedans.) / |->home | |->kali | |server.py | ->cgi-bin | | hello.py j’espère que c’est assez clair^^
je précise en changeant le handler.cgi_directories par "/" la racine j’obtiens l’érreur: Error code: 403 Message: CGI script is not a plain file (’//’). Error code explanation: 403 - Request forbidden — authorization will not help.

+0 -0

Bonjour,

Merci pour les précisions !

Je pense que si tu mets "/", ça va considérer que le répertoire cgi-bin est "kali"… Il faudrait je pense mettre "/cgi-bin" pour que ça trouve le bon dossier. Vous dites que vous avez une erreur une fois que vous avez remplacé par "/"… Qu’aviez-vous avant ?

Bonjour,

Pas de soucis ^^ effectivement en laissant la racine j’obtiens cette érreur je suppose que cela concerne d’autres script cgi au seins de l’os kali car en changeant le path le serveur se comporte en index of comme si il ne détectai pas mon hello.py j’ai également éssayé en mettant hello.py directement dans le meme repertoire que server.py et en modifiant le path le comportement reste le meme…T_T

Salut,

J’ai fait tourné ton code chez moi et j’arrive, pour une mystérieuse raison, sur un "directory listing"…

Très honnêtement, je ne sais pas si http.server est le meilleur outil pour commencer en python avec ce genre de chose…

J’avoue que personnellement, je te redirigerais plutôt vers Flask

Bonne journée,

Salut,

Flask/Flask Restfull ou Fastapi sont de biens meilleurs choix. Il y a aussi Cherrypy qui est encore plus simple. Cependant, tu n’auras pas la réécriture d’url de mémoire. Le problème avec Flask, c’est qu’il y a énormément d’extensions pour arriver à tes fins. Ce qui veut dire qu’aux premiers abords, ça parait simple, mais ça devient vite complexe. Cela dit, pour un petit projet, Flask est une bonne pioche !

J’ai indiqué Flask Restfull et Fastapi. Ce sont d’excellents outils afin de créer des micro services. Cela veut dire que pour le front, il faudra utiliser une technologie adéquates (React/Backbone (je le ressors ^^)/Vue/Svelte/Solid/etc.)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte