Apache Airflow 2.0 配置CORS参数后调用REST API仍出现跨域问题
Airflow CORS跨域配置不生效排查解决步骤
- 首先确认配置修改后已重启所有Airflow相关服务,包括webserver、scheduler、worker进程,Airflow配置不支持热加载,未重启的情况下修改的配置不会生效。
- 检查你修改的是否为Airflow实际加载的配置文件,执行以下命令查看生效的webserver段配置:
确认返回的airflow config get section webserveraccess_control_allow_*相关配置和你设置的一致,避免修改了错误路径的配置文件。 - 如果你前端Angular请求开启了
withCredentials携带身份凭据,access_control_allow_origin不能设置为*,必须改为前端的明确域名,例如http://localhost:4200,同时需要在配置中新增:access_control_allow_credentials = True - 确认OPTIONS预检请求未被身份校验拦截:你使用的
airflow.api.auth.backend.basic_auth默认会校验所有请求的身份,而OPTIONS预检请求不会携带Authorization头,会直接返回401,不会携带CORS响应头。需要在配置中新增auth后端参数允许OPTIONS请求跳过校验:auth_backend_args = {"allow_options": true} - 完成配置后可以直接用curl命令测试接口响应头,不需要依赖前端调试:
查看返回结果中是否存在curl -X OPTIONS -H "Origin: http://<你的Angular服务地址>" -H "Access-Control-Request-Method: GET" <你的Airflow API接口地址> -vAccess-Control-Allow-Origin等预期的CORS响应头即可确认配置是否生效。
内容的提问来源于stack exchange,提问作者sayali
相关产品推荐
相关产品推荐

