Estoy intentando hacer una solicitud POST desde un script JS a un servidor Flask en pythonanywhere así:
const response = await fetch('http://myusername.pythonanywhere.com/', { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ track: track }) });Donde pista es una matriz de números nx10. He realizado con éxito solicitudes al servidor a través de Insomnia con un cuerpo como este:
{ "track": [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10.234], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]] }e imprimí el contenido del cuerpo de la solicitud en los registros donde se ve así:
2021-11-16 15:57:14 Test message! 2021-11-16 15:57:14 <Request 'http://myusername.pythonanywhere.com/' [POST]> 2021-11-16 15:57:14 {'track': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10.234], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]}Sin embargo, cuando intento realizar una solicitud desde mi aplicación web con el primer fragmento de código, obtengo esto en los registros:
2021-11-16 15:54:21 Test message! 2021-11-16 15:54:21 <Request 'http://myusername.pythonanywhere.com/' [POST]> 2021-11-16 15:54:21 NoneCódigo del servidor:
@app.route('/', methods=['POST']) def handle_post(): req_data = request.get_json() print("Test message!") print(request) print(req_data) data = req_data['track'] trackData = np.array(data) grade = analysisV2(trackData) return jsonify({"grade": grade})No tengo idea de por qué una solicitud funciona pero la otra no. También intenté codificar los mismos datos que estoy usando en Insomnia en el cuerpo de solicitud de JS sin ninguna diferencia. ¿Alguien ve algo que me pueda estar perdiendo?
Me las arreglé para averiguar qué estaba pasando en caso de que alguien se lo pregunte y esté haciendo algo similar.
Hubo un par de problemas aquí:
mode: 'no-cors' a la solicitud evita que el servidor responda con datos reales, por lo que debe eliminarse.'Access-Control-Allow-Origin': '*' .from flask_cors import CORS y CORS(app)