O compartilhamento de recursos de origem cruzada (CORS) controla quais origens externas podem acessar os recursos da sua API por meio de um navegador. Configure políticas de CORS no nível da rota para restringir as origens permitidas, os métodos HTTP e os cabeçalhos.
Procedimento
-
Configure uma política de CORS dentro ou fora de uma instância:
APIs fora de uma instância
Acesse o console do Cloud-native API Gateway. No painel de navegação à esquerda, escolha API e selecione uma região.
Clique na API de destino. Na lista suspensa de instâncias, selecione a instância de destino ou All instances.
Selecione a rota de destino na lista Routes.
APIs dentro de uma instância
Acesse o console do Cloud-native API Gateway. No painel de navegação à esquerda, escolha Instance e selecione uma região.
Na página Instance, clique na instância de destino. No painel de navegação à esquerda, escolha API e clique na API de destino.
Selecione a rota de destino na lista Routes.
Clique na aba Configure Policy e clique em Enable Policy/Plug-in na seção Inbound Processing.
-
Clique no cartão CORS. No painel Add Policy: CORS, configure os parâmetros e clique em Add.
NotaAs políticas de CORS não se aplicam a serviços simulados. Use um serviço de backend real para testes.
Parâmetro
Descrição
Enable
Ative a opção Enable.
-
Ativado: as origens de terceiros especificadas podem acessar os recursos do seu servidor por meio de um navegador.
-
Desativado: nenhuma origem de terceiros pode acessar os recursos do seu servidor por meio de um navegador.
Allowed Origins
As origens com permissão para acessar os recursos do seu servidor. Formatos suportados:
-
Todas as origens:
*. -
Correspondência de subdomínio com caractere curinga:
*.example.com. -
Várias origens específicas: insira cada origem em uma linha separada, começando com
http://ouhttps://.
NotaCorresponde ao cabeçalho
Access-Control-Allow-Origin. Quando oOriginde uma requisição corresponde a uma origem permitida, o cabeçalho de respostaAccess-Control-Allow-Originretorna esse valor deOrigin.Allowed Methods
Os métodos HTTP permitidos para requisições de origem cruzada. Métodos comuns: GET, POST, PUT, DELETE, HEAD, OPTIONS e PATCH.
NotaCorresponde ao cabeçalho Access-Control-Allow-Methods.
Allowed Request Headers
Cabeçalhos de requisição não padrão permitidos em requisições de origem cruzada.
-
Todos os cabeçalhos:
*. -
Vários cabeçalhos específicos: insira cada nome em uma linha separada.
NotaCorresponde ao cabeçalho Access-Control-Allow-Headers.
Allowed Response Headers
Cabeçalhos de resposta expostos a scripts do lado do cliente.
-
Todos os cabeçalhos:
*. -
Vários cabeçalhos específicos: insira cada nome em uma linha separada.
NotaCorresponde ao cabeçalho Access-Control-Expose-Headers.
Allow to Carry Credentials
Define se as requisições de origem cruzada podem incluir credenciais, como cookies e autenticação HTTP.
NotaCorresponde ao cabeçalho Access-Control-Allow-Credentials.
Precheck Expiration Time
A duração, em segundos, durante a qual um navegador pode armazenar em cache os resultados da resposta de preflight (OPTIONS) para requisições não simples.
NotaCorresponde ao cabeçalho Access-Control-Max-Age.
-
Verificação
-
Envie uma requisição de teste:
curl -I -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/list -
Saída esperada:
HTTP/1.1 200 OK allow: GET,HEAD,OPTIONS x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-length: 0 date: Tue, 30 Nov 2021 03:20:31 GMT x-envoy-upstream-service-time: 6 access-control-allow-origin: http://example.com access-control-allow-credentials: true access-control-allow-methods: GET,POST,PUT,DELETE,HEAD,OPTIONS access-control-expose-headers: * server: istio-envoy
Referências
Saiba mais sobre o CORS no MDN.