javascript - Errores CORS con Flask y gevent
python (2)
Hay un decodificador de fragmento de matraz para el control de acceso HTTP , puede usar el decorador @crossdomain (origin = ''*'').
Tengo una API ejecutándose, usando Flask, Flask-SQLAlchemy y Flask-Restless, y estoy tratando de realizar solicitudes POST / PUT / DELETE desde javascript (backbone.js, para ser precisos). Sin embargo, sigo encontrándome con errores CORS, todo, excepto GET, devuelve un HTTP OPTIONS 501 Error no implementado en el navegador.
Inicialmente, traté de agregar los encabezados CORS menos restrictivos posibles a todas las respuestas:
@app.after_request
def after(response):
response.headers.add(''Access-Control-Allow-Origin'', ''*'')
response.headers.add(''Access-Control-Allow-Methods'',
''POST, GET, PUT, PATCH, DELETE, OPTIONS'')
response.headers.add(''Access-Control-Allow-Headers'',
''Content-Type, X-Requested-With'')
response.headers.add(''Access-Control-Max-Age'', ''1728000'')
return response
CORS pareció fallar cuando el encabezado Content-Type de la solicitud se estableció en application / json (como lo requiere la API), por lo que se realizó un corte rápido para que todo funcione:
@app.before_request
def before():
request.environ[''CONTENT_TYPE''] = ''application/json''
Sin embargo, todo excepto POST aún falla. Además, el registro de gevent está activado, pero no se registran solicitudes OPTIONS (que creo que es el material de verificación previa de CORS), incluso cuando el navegador muestra que fallan con un 501.
¿Debo cambiar algo en gevent o Flask para que funcione CORS?
Editar: Funciona la API con el servidor de Flask incorporado, así que el problema es gevent, pero parece que no puedo encontrar mucho en el camino de los documentos ...
La forma más simple es usar el plugin de mazo-cors
Instalar usando pip
instalación de pip -U frasco-cors
Código de muestra
app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
@app.route("/api/v1/users")
def list_users():
return "user example"
Para la documentación, diríjase aquí a la documentación del matraz .