Tengo una aplicación Flask que se divide en SPA frontal (Vue.js) y back-end. Pero tengo problemas con CORS.
En el front-end, hago llamadas API a //127.0.0.1:5000 , que es lo que escucha el back-end:
axios.put( '//127.0.0.1:5000/api/foo', formData, { headers: { 'Content-Type': 'multipart/form-data' } })En el back-end, configuré CORS usando Flask-CORS como todos mencionan. También estoy usando Blueprints (si eso hace alguna diferencia), y mi enrutador se ve así:
from flask_cors import CORS api = Blueprint('api', __name__) CORS(api) @api.route('/api/foo', methods=['PUT']) def foo(): # etc... En Firefox, recibo una solicitud de verificación previa de OPTIONS , luego un error de consola:
Solicitud de origen cruzado bloqueada: la política del mismo origen no permite leer el recurso remoto en https://127.0.0.1:5000/api/foo . (Motivo: la solicitud de CORS no tuvo éxito). Código de estado: (nulo).
Y en Chrome, me sale este error:
PONGA https://127.0.0.1:5000/api/foonet::ERR_CONNECTION_REFUSED
En mi máquina local, no tengo problemas. El problema ocurre en la instancia que implementé en Digitalocean. Tiene HTTPS habilitado, por lo que no debería ser un problema (creo). ¿Algunas ideas? ¿Necesito cambiar la llamada a localhost a otra cosa? Siento que he probado todas las sugerencias relevantes con respecto a CORS.
El middleware CORS pasa por Flask APP, no por blueprint
app = Flask(__name__) CORS(app)