Estoy enviando una cadena de texto desde javascript a un programa cgi python3. Usuario iniciando el envío con un botón.
Con el código simplificado que hice a continuación, el servidor parece reconocer el POST pero el cgi no se ejecuta. (no se muestra ninguna salida). Sin embargo, si actualizo la página donde está mi botón, la salida del programa cgi ahora se muestra en stderr. Comportamiento extraño.
¿Algún consejo?
Estoy usando un servidor python cgi.
python3 -m http.server --cgi 8000el archivo html:
<html> <head> <script> function post_data(){ var xhr = new XMLHttpRequest(); xhr.open("POST", "/cgi-bin/cgi.py"); xhr.setRequestHeader('Content-Type', 'text/html'); xhr.send("hello world"); xhr.onload = function() { console.log(`Loaded: ${xhr.status} ${xhr.response}`); }; xhr.onerror = function() { console.log(`Network Error`); }; } </script> <body> <button type="button" class="btn btn-primary" onclick="post_data()">Send</button> </body></html>El cgi de pitón:
#!/usr/bin/python3 import sys sys.stderr.write(sys.stdin.read()) print("Content-Type: text/html\n\n") print("<html><body>ok</body></html>")La salida una vez que se hace clic en el botón:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... 127.0.0.1 - - [15/Oct/2021 17:03:38] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [15/Oct/2021 17:03:39] "POST /cgi-bin/cgi.py HTTP/1.1" 200 -después de actualizar la página, aparece este resultado adicional:
hello world127.0.0.1 - - [15/Oct/2021 17:04:03] "GET / HTTP/1.1" 304 -