第 1 章 跨资源共享(CORS)


在 Quarkus 中启用并配置 CORS,以指定允许的源、方法和标头,在安全处理跨原始请求时获取浏览器。

跨资源共享(CORS)使用 HTTP 标头来管理来自外部来源的资源的浏览器请求。通过指定允许的源、方法和标头,Quarkus 服务器可以使用 CORS 过滤器使浏览器在域间请求资源,同时保持受控访问。这种机制增强了安全性,并支持合法跨原始请求。有关原始定义的更多信息,请参阅 Web Origin Concept

1.1. 启用 CORS 过滤器

要强制应用程序中 CORS 策略,请通过在 src/main/resources/application.properties 文件中添加以下行来启用 Quarkus CORS 过滤器:

quarkus.http.cors.enabled=true
Copy to Clipboard Toggle word wrap

过滤器截获所有传入的 HTTP 请求,以识别跨原始请求并应用配置的策略。然后,过滤器会将 CORS 标头添加到 HTTP 响应中,通知浏览器有关允许的源和访问参数。对于 preflight 请求,过滤器会立即返回 HTTP 响应。对于常规 CORS 请求,如果请求违反了配置策略,则过滤器会拒绝 HTTP 403 状态的访问;否则,如果策略允许,过滤器会将请求转发到目的地。

有关详细的配置选项,请查看以下配置属性部分。

build 时修复的 - 配置属性在构建时修复 - 所有其他配置属性在运行时可覆盖

Expand

配置属性

Type

default

quarkus.http.cors.origins

CORS 允许的源。

以逗号分隔的有效 URL 列表,如 http://www.quarkus.io,http://localhost:3000。以正斜杠括起的 URL 解释为正则表达式。

环境变量: QUARKUS_HTTP_CORS_ORIGINS

字符串列表

 

quarkus.http.cors.methods

允许 CORS 请求的 HTTP 方法。

以逗号分隔的有效 HTTP 方法列表,如 GET、PUT、POST。如果没有设置,则过滤器默认允许任何 HTTP 方法。

默认:允许任何 HTTP 请求方法。

环境变量: QUARKUS_HTTP_CORS_METHODS

字符串列表

 

quarkus.http.cors.headers

CORS 请求允许的 HTTP 标头。

以逗号分隔的有效标头列表,如 X-Custom,Content-Disposition。如果没有设置,过滤器默认允许任何标头。

默认:允许任何 HTTP 请求标头。

环境变量: QUARKUS_HTTP_CORS_HEADERS

字符串列表

 

quarkus.http.cors.exposed-headers

CORS 响应中公开的 HTTP 标头。

要公开的标头的逗号分隔列表,如 X-Custom,Content-Disposition

默认:不会公开标头。

环境变量: QUARKUS_HTTP_CORS_EXPOSED_HEADERS

字符串列表

 

quarkus.http.cors.access-control-max-age

Access-Control-Max-Age 响应标头值,格式为 java.time.Duration

告知浏览器可以缓存 preflight 请求结果的时长。

环境变量: QUARKUS_HTTP_CORS_ACCESS_CONTROL_MAX_AGE

持续时间 5-4 Duration 格式

 

quarkus.http.cors.access-control-allow-credentials

Access-Control-Allow-Credentials 响应标头。

当请求的凭据模式 Request.credentials 被设置为 include 时,告诉浏览器,如果允许前端 JavaScript 访问凭证。

default: true 如果设置了 quarkus.http.cors.origins 属性,并且与 precise Origin 标头值匹配。

环境变量: QUARKUS_HTTP_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS

布尔值

 
关于 Duration 格式

要写入持续时间值,请使用标准 java.time.Duration 格式。如需更多信息,请参阅 Duration#parse ()Java API 文档

您还可以使用简化的格式,从数字开始:

  • 如果值只是一个数字,它代表时间(以秒为单位)。
  • 如果值为数字,后跟 ms,代表时间(毫秒)。

在其他情况下,简化的格式被转换为 java.time.Duration 格式以进行解析:

  • 如果该值是一个数字,后跟 hms,则前缀为 PT
  • 如果值为数字,后跟 d,则会以 P 为前缀。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat