Почему я получаю ошибку 403 при отправке запроса на обработку?

#python #cgi

#python #cgi

Вопрос:

Я запускаю локальный сервер python в ubuntu, server.py:

 from http.server import HTTPServer, CGIHTTPRequestHandler

server_address = ("", 8000)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()
  

это запуск и открытие index.html:

 <!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Обработка данных форм</title>
</head>
<body>
    <form action="/cgi-bin/form.py">
        <input type="text" name="TEXT_1">
        <input type="text" name="TEXT_2">
        <input type="submit">
    </form>
</body>
</html>
  

Затем я отправляю запрос GET, у меня ошибка кода 403:

 Error response
Error code: 403
Message: CGI script is not executable ('/cgi-bin/form.py').
Error code explanation: HTTPStatus.FORBIDDEN - Request forbidden -- authorization will not help.
  

form.py:

 #!/usr/bin/env python3
import cgi

form = cgi.FieldStorage()
text1 = form.getfirst("TEXT_1", "не задано")
text2 = form.getfirst("TEXT_2", "не задано")

print("Content-type: text/htmln")
print("""<!DOCTYPE HTML>
        <html>
        <head>
            <meta charset="utf-8">
            <title>Обработка данных форм</title>
        </head>
        <body>""")

print("<h1>Обработка данных форм!</h1>")
print("<p>TEXT_1: {}</p>".format(text1))
print("<p>TEXT_2: {}</p>".format(text2))

print("""</body>
        </html>""")
  

Я пытаюсь использовать Win 10, и он работает хорошо.

Я знаю о запуске сервера на Linyx следующим образом:

 python3 -m http.server --cgi
  

но мне нужно начать с файла.

Ответ №1:

Хорошо, я думаю, это просто:

 chmod  x form.py
  

Теперь это работает.