1 votos

El acceso a la URL desde Chrome y Safari va bien pero el terminal encuentra `curl: (52) Empty reply from server`, ¿qué hago?

Este código Python flask aloja un simple servicio web

app = Flask(__name__)

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        user = request.form['nm']
        print(user)
        return redirect(url_for('user', usr=user))
    else:
        return render_template('login.html')

@app.route('/<usr>')
def user(usr):
    return f'{usr}'

if __name__ == "__main__":
    app.run(host="0.0.0.0")

Aquí está el login.html

<form action="#" method="post">
    <p><input type="text" name="nm" id=""></p>
    <p><input type="submit" value="submit"></p>
</form>

La IP de mi Mac = 192.168.31.37

Cuando accedo a la siguiente URL desde Chrome y Safari

http://192.168.31.37:5000/aa

todo va como se espera.

Sin embargo, cuando ejecuto esta línea desde el terminal

$ curl http://192.168.31.37:5000/aa

Siempre me sale esto

curl: (52) Empty reply from server

He mirado en un puesto pero no tengo ninguna pista para esto. ¿Qué debo hacer?

no sólo esta URL, curl en la terminal de mi Mac da este error para cualquier URL.

2voto

staffan Puntos 3299

El contenido que se obtiene de un servidor no depende sólo de la URL. Puede depender del método de solicitud, las preferencias de idioma, el agente de usuario, las cookies, etc.

Puedes preguntarle a tu navegador exactamente lo que envía al servidor. Chrome, Firefox y Safari tienen un comando en sus herramientas de desarrollo que copia algo en el portapapeles que puedes pegar en una ventana de shell. En Safari, habilitar las herramientas para desarrolladores y abra el Inspector Web en la página actual. En Chrome o Firefox, pulse F12 . En cualquiera de estos navegadores, en las herramientas para desarrolladores, ve a la pestaña Red, recarga la página, selecciona la primera ubicación y "Copia como cURL" en el menú contextual (puede estar en un submenú "Copiar"). A continuación, pegue el comando en un terminal. El comando tendrá la forma

curl -X GET -H … http://192.168.31.37:5000/aa

Su comando curl no especifica un método, por lo que es un GET por defecto. El formulario especifica un POST. Así que si estás tratando de simular la entrada en el formulario, tendrás que pasar -X POST a curl, y por supuesto para pasar los datos del formulario. Para ver lo que el navegador envía con el formulario, abra las herramientas de desarrollador' y cambie a la pestaña "Red" antes de enviar el formulario, luego use el comando "copiar como cURL" desde la URL del formulario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X