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: 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: 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: 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: Show more |
list of string |
|
The Environment variable: Show more |
||
The Environment variable: Show more |
boolean |
About the Duration format
To write duration values, use the standard Você também pode usar um formato simplificado, começando com um número:
Em outros casos, o formato simplificado é traduzido para o formato 'java.time.Duration' para análise:
|
-
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 |
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. |