Quarkus非生产环境CORS配置失效,Origin验证失败求助
Quarkus非生产环境CORS配置失败排查求助
环境版本
quarkus-bom 3.13.2
application.properties配置
%nonprod.quarkus.http.cors=true %nonprod.quarkus.http.cors.access-control-allow-credentials=true %nonprod.quarkus.http.cors.methods=GET,POST,OPTIONS %nonprod.quarkus.http.cors.origins=http://localhost:8080 %nonprod.quarkus.http.cors.headers=authorization,content-type,origin,accept,x-requested-with,access-control-allow-origin,access-control-request-method
测试命令
curl "$API_SERVICE_HOST/api/portal/resources" -H "Origin: http://localhost:8080" -H "Access-Control-Request-Method: GET" -X OPTIONS -i
错误现象
请求返回HTTP 403响应,Quarkus日志输出:
{ "@timestamp": "2024-09-09T14:40:45.482843394Z", "logger_name": "io.quarkus.vertx.http.runtime.cors.CORSFilter", "level": "DEBUG", "message": "Invalid origin http://localhost:8080", "thread_name": "vert.x-eventloop-thread-1", "application": "msg-dex-api" }
Keycloak授权配置情况
服务启用了Keycloak授权,但已禁用OPTIONS方法的策略强制:
%nonprod.quarkus.keycloak.policy-enforcer.paths.4.path=/api/* %nonprod.quarkus.keycloak.policy-enforcer.paths.4.methods.1.method=OPTIONS %nonprod.quarkus.keycloak.policy-enforcer.paths.4.methods.1.scopes=ANY %nonprod.quarkus.keycloak.policy-enforcer.paths.4.methods.1.scopes-enforcement-mode=DISABLED %nonprod.quarkus.keycloak.policy-enforcer.paths.4.enforcement-mode=DISABLED
不携带Origin头时请求返回200,说明授权服务未干扰OPTIONS请求。
已尝试操作
- 修改
cors.origins配置为*或/.*/,问题依旧 - 新增日志显示同源检查失败,请求URI为
https://msg-dex.myhost.com/api/portal/resources,Origin为https://localhost:8080
求助排查配置或请求中的问题。
内容的提问来源于stack exchange,提问作者Anthony Heaney
相关产品推荐
相关产品推荐

