The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Compartilhamento de recursos entre origens

O CORS (Cross-origin resource sharing, compartilhamento de recursos entre origens) é um mecanismo baseado em cabeçalhos HTTP que permite que um servidor indique quaisquer origens diferentes da sua, a partir das quais um navegador deve permitir o carregamento de recursos.

Essas origens consistem em um único domínio, esquema e porta. Para obter a definição completa de origem, consulte a página Conceito de Origem da Web.

Filtro CORS

O Quarkus fornece um filtro CORS, que implementa a interface jakarta.servlet.Filter e intercepta todas as requisições HTTP recebidas. Ele pode ser ativado no arquivo de configuração do Quarkus, src/main/resources/application.properties :

quarkus.http.cors=true

Quando o filtro estiver ativado e identificar uma solicitação HTTP como de origem cruzada, ele aplicará a política CORS. Ele também adicionará cabeçalhos configurados com as seguintes propriedades antes de encaminhar a solicitação ao destino pretendido, como um servlet, um recurso Jakarta REST ou outros endpoints.

Configuration property fixed at build time - All other configuration properties are overridable at runtime

Configuration property

Tipo

Padrão

Origins allowed for CORS Comma separated list of valid URLs, e.g.: http://www.quarkus.io,http://localhost:3000 In case an entry of the list is surrounded by forward slashes, it is interpreted as a regular expression.

Environment variable: QUARKUS_HTTP_CORS_ORIGINS

Show more

list of string

HTTP methods allowed for CORS Comma separated list of valid methods. ex: GET,PUT,POST The filter allows any method if this is not set. default: returns any requested method as valid

Environment variable: QUARKUS_HTTP_CORS_METHODS

Show more

list of string

HTTP headers allowed for CORS Comma separated list of valid headers. ex: X-Custom,Content-Disposition The filter allows any header if this is not set. default: returns any requested header as valid

Environment variable: QUARKUS_HTTP_CORS_HEADERS

Show more

list of string

HTTP headers exposed in CORS Comma separated list of valid headers. ex: X-Custom,Content-Disposition default: empty

Environment variable: QUARKUS_HTTP_CORS_EXPOSED_HEADERS

Show more

list of string

The Access-Control-Max-Age response header value indicating how long the results of a pre-flight request can be cached.

Environment variable: QUARKUS_HTTP_CORS_ACCESS_CONTROL_MAX_AGE

Show more

Duration

The Access-Control-Allow-Credentials header is used to tell the browsers to expose the response to front-end JavaScript code when the request’s credentials mode Request.credentials is “include”. The value of this header will default to true if quarkus.http.cors.origins property is set and there is a match with the precise Origin header.

Environment variable: QUARKUS_HTTP_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS

Show more

boolean

About the Duration format

To write duration values, use the standard java.time.Duration format. See the Duration#parse() Java API documentation for more information.

Você também pode usar um formato simplificado, começando com um número:

  • Se o valor for apenas um número, ele representará o tempo em segundos.

  • Se o valor for um número seguido de 'ms', ele representa o tempo em milissegundos.

Em outros casos, o formato simplificado é traduzido para o formato 'java.time.Duration' para análise:

  • Se o valor for um número seguido de 'h', 'm' ou 's', ele é prefixado com 'PT'.

  • Se o valor for um número seguido de 'd', ele é prefixado com 'P'.

  1. Um exemplo de uma configuração completa de filtro CORS que inclui uma expressão regular que define uma origem permitida

quarkus.http.cors=true
quarkus.http.cors.origins=http://foo.com,http://www.bar.io,/https://([a-z0-9\\-_]+)\\\\.app\\\\.mydomain\\\\.com/
quarkus.http.cors.methods=GET,PUT,POST
quarkus.http.cors.headers=X-Custom
quarkus.http.cors.exposed-headers=Content-Disposition
quarkus.http.cors.access-control-max-age=24H
quarkus.http.cors.access-control-allow-credentials=true

/https://([a-z0-9\\-_]+)\\\\.app\\\\.mydomain\\\\.com/ é tratada como uma expressão regular porque os caracteres de barra a cercam.

Se usar expressões regulares em um arquivo application.properties, certifique-se de que quatro barras invertidas sejam usadas para representar . e outros caracteres de metadados de expressões regulares como caracteres normais; por exemplo, \\\\. representa um caractere . , enquanto \\. representa um caractere de metadados que permite qualquer caractere.

Suporte a todas as origens no modo de desenvolvimento

Pode ser difícil configurar as origens necessárias ao desenvolver uma aplicação Quarkus que exija suporte a CORS. Nesses casos, considere permitir todas as origens apenas no modo de desenvolvimento para se concentrar primeiro no desenvolvimento real:

quarkus.http.cors=true
%dev.quarkus.http.cors.origins=/.*/

Permitir todas as origens exclusivamente para o perfil de desenvolvimento. Não é aconselhável permitir todas as origens em um ambiente de produção, pois isso pode levar a riscos de segurança significativos.

Conteúdo Relacionado