还有另一种方法可以在不使用falcon-cors的情况下实现这一点
您可能想在官方文档中查看此内容 - how-do-i-implement-cors-with-falcon
class CORSComponent:
def process_response(self, req, resp, resource, req_succeeded):
resp.set_header('Access-Control-Allow-Origin', '*')
if (req_succeeded
and req.method == 'OPTIONS'
and req.get_header('Access-Control-Request-Method')
):
# NOTE: This is a CORS preflight request. Patch the
# response accordingly.
allow = resp.get_header('Allow')
resp.delete_header('Allow')
allow_headers = req.get_header(
'Access-Control-Request-Headers',
default='*'
)
resp.set_headers((
('Access-Control-Allow-Methods', allow),
('Access-Control-Allow-Headers', allow_headers),
('Access-Control-Max-Age', '86400'), # 24 hours
))
使用上述方法时,OPTIONS 请求也必须在您用于身份验证、内容协商等的任何其他中间件或挂钩中进行特殊处理。例如,您通常会跳过预检请求的身份验证,因为它根本没有必要;请注意,此类请求在任何情况下都不包含 Authorization 标头。
你现在可以把它放在中间件中
api = falcon.API(middleware=[
CORSComponent()
])