【发布时间】:2021-12-02 06:17:35
【问题描述】:
我有一个使用 Flask-CORS 的 Flask 应用程序,以及一个 WSGI 中间件,它返回自定义响应而不是某些路由的 Flask 应用程序。对于中间件返回的响应,Flask-CORS 未应用,因此我必须手动将 CORS 标头应用于该响应。
class Middleware:
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
request = Request(environ)
if request.path == "/foo":
res = Response("...", mimetype="application/json", status=403)
# flask-cors is not applied, so I set headers manually
res.access_control_allow_credentials = True
res.access_control_allow_origin = "*"
res.access_control_allow_methods = ["GET", "PUT", "DELETE", "PATCH", "OPTIONS", "POST", "HEAD"]
return res(environ, start_response)
return self.app(environ, start_response) # flask-cors works here
app = Flask(__name__)
app.wsgi_app = Middleware(app)
CORS(app)
我尝试颠倒应用中间件和 Flask-CORS 的顺序,但这并没有改变它。
app = Flask(__name__)
CORS(app)
app.wsgi_app = Middleware(app)
我不想重复 Flask-CORS 所做的事情。如何将 Flask-CORS 应用于来自中间件的响应?
【问题讨论】:
标签: python flask wsgi flask-cors