CORS
APLICA-SE A: Todas as camadas de gerenciamento de API
A cors
política adiciona suporte a compartilhamento de recursos entre origens (CORS) a uma operação ou a uma API para permitir chamadas entre domínios de clientes baseados em navegador.
Nota
Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Para ajudá-lo a configurar essa política, o portal fornece um editor guiado baseado em formulários. Saiba mais sobre como definir ou editar políticas de Gerenciamento de API.
Declaração de política
<cors allow-credentials="false | true" terminate-unmatched-request="true | false">
<allowed-origins>
<origin>origin uri</origin>
</allowed-origins>
<allowed-methods preflight-result-max-age="number of seconds">
<method>HTTP verb</method>
</allowed-methods>
<allowed-headers>
<header>header name</header>
</allowed-headers>
<expose-headers>
<header>header name</header>
</expose-headers>
</cors>
Atributos
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
permitir-credenciais | O Access-Control-Allow-Credentials cabeçalho na resposta de comprovação será definido com o valor desse atributo e afetará a capacidade do cliente de enviar credenciais em solicitações entre domínios. São permitidas expressões de política. |
Não | false |
terminate-unmatched-request | Controla o processamento de solicitações de origem cruzada que não correspondem às configurações de política. São permitidas expressões de política. Quando OPTIONS a solicitação é processada como uma solicitação de comprovação e Origin o cabeçalho não corresponde às configurações de política:- Se o atributo estiver definido como true , encerre imediatamente a solicitação com uma resposta vazia 200 OK - Se o atributo estiver definido como false , verifique se há outras políticas no escopo cors que são filhos diretos do elemento de entrada e aplique-as. Se nenhuma cors política for encontrada, encerre a solicitação com uma resposta vazia 200 OK . Quando GET a solicitação inclui HEAD o cabeçalho (e, portanto, é processada Origin como uma simples solicitação de origem cruzada) e não corresponde às configurações de política:- Se o atributo estiver definido como true , encerre imediatamente a solicitação com uma resposta vazia 200 OK .- Se o atributo estiver definido como false , permita que a solicitação prossiga normalmente e não adicione cabeçalhos CORS à resposta. |
Não | true |
Elementos
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
origens permitidas | Contém origin elementos que descrevem as origens permitidas para solicitações entre domínios. allowed-origins pode conter um único origin elemento que especifica * para permitir qualquer origem ou um ou mais origin elementos que contêm um URI. |
Sim | N/A |
métodos permitidos | Este elemento é necessário se métodos diferentes ou GET POST permitidos. Contém method elementos que especificam os verbos HTTP suportados. O valor * indica todos os métodos. |
Não | Se esta seção não estiver presente GET e POST for suportada. |
cabeçalhos permitidos | Este elemento contém header elementos que especificam nomes dos cabeçalhos que podem ser incluídos na solicitação. |
Sim | N/A |
expor-cabeçalhos | Este elemento contém header elementos que especificam nomes dos cabeçalhos que serão acessíveis pelo cliente. |
No | N/A |
Atenção
Use o curinga *
com cuidado nas configurações de política. Essa configuração pode ser excessivamente permissiva e pode tornar uma API mais vulnerável a determinadas ameaças à segurança da API.
elementos de origem permitida
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
origem | O valor pode ser * para permitir todas as origens ou um URI que especifica uma única origem. O URI deve incluir um esquema, host e porta. Não inclua as aspas. |
Sim | Se a porta for omitida em um URI, a porta 80 será usada para HTTP e a porta 443 será usada para HTTPS. |
atributos allowed-methods
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
pré-voo-resultado-max-idade | O Access-Control-Max-Age cabeçalho na resposta de comprovação será definido com o valor desse atributo e afetará a capacidade do agente do usuário de armazenar em cache a resposta de comprovação. São permitidas expressões de política. |
Não | 0 |
elementos de métodos permitidos
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
método | Especifica um verbo HTTP. São permitidas expressões de política. | Pelo menos um method elemento é necessário se a allowed-methods seção estiver presente. |
N/A |
elementos de cabeçalhos permitidos
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
cabeçalho | Especifica um nome de cabeçalho. | Pelo menos um header elemento é necessário se allowed-headers essa secção estiver presente. |
N/A |
elementos expose-headers
Nome | Descrição | Necessário | Predefinição |
---|---|---|---|
cabeçalho | Especifica um nome de cabeçalho. | Pelo menos um header elemento é necessário se expose-headers essa secção estiver presente. |
N/A |
Utilização
- Secções políticas: entrada
- Âmbitos de política: global, área de trabalho, produto, API, operação
- Gateways: clássico, v2, consumo, auto-hospedado, espaço de trabalho
Notas de utilização
- Você pode configurar a
cors
política em mais de um escopo (por exemplo, no escopo do produto e no escopo global). Certifique-se de que obase
elemento esteja configurado nos escopos de operação, API e produto para herdar as políticas necessárias nos escopos pai. - Apenas a apólice
cors
é avaliada no pedido durante oOPTIONS
pré-voo. As restantes políticas configuradas são avaliadas no pedido aprovado.
- Esta política só pode ser utilizada uma vez numa secção de política.
Sobre o CORS
CORS é um padrão baseado em cabeçalho HTTP que permite que um navegador e um servidor interajam e determinem se devem ou não permitir solicitações de origem cruzada específicas (XMLHttpRequest
chamadas feitas de JavaScript em uma página da Web para outros domínios). Isso permite mais flexibilidade do que permitir apenas solicitações de mesma origem, mas é mais seguro do que permitir todas as solicitações de origem cruzada.
O CORS especifica dois tipos de solicitações de origem cruzada:
Solicitações de comprovação (ou "comprovação") - O navegador primeiro envia uma solicitação HTTP usando o
OPTIONS
método para o servidor, para determinar se a solicitação real tem permissão para enviar. Se a resposta do servidor incluir o cabeçalho que permite oAccess-Control-Allow-Origin
acesso, o navegador segue com a solicitação real.Solicitações simples - Essas solicitações incluem um ou mais cabeçalhos extras
Origin
, mas não acionam uma comprovação do CORS. Somente solicitações usando osGET
métodos eHEAD
e um conjunto limitado de cabeçalhos de solicitação são permitidas.
cors
Cenários políticos
Configure a cors
política no Gerenciamento de API para os seguintes cenários:
Ative a consola de teste interativa no portal do programador. Veja a documentação do portal do programador para obter detalhes.
Nota
Quando você habilita o CORS para o console interativo, por padrão, o Gerenciamento de API configura a
cors
política no escopo global.Ative a Gestão de API para responder aos pedidos de verificação prévia ou passar por pedidos CORS simples quando os back-ends não fornecem o seu próprio suporte CORS.
Nota
Se uma solicitação corresponder a uma operação com um
OPTIONS
método definido na API, a lógica de processamento da solicitação de comprovação associada àcors
política não será executada. Portanto, tais operações podem ser usadas para implementar lógica de processamento de comprovação personalizada - por exemplo, para aplicar acors
política apenas sob certas condições.
Problemas comuns de configuração
- Chave de assinatura no cabeçalho - Se você configurar a
cors
política no escopo do produto e sua API usar autenticação de chave de assinatura, a política não funcionará quando a chave de assinatura for passada em um cabeçalho. Como solução, modifique os pedidos para incluírem uma chave de subscrição como parâmetro de consulta. - API com controle de versão de cabeçalho - Se você configurar a
cors
política no escopo da API e sua API usar um esquema de controle de versão de cabeçalho, a política não funcionará porque a versão é passada em um cabeçalho. Poderá ter de configurar um método de controlo de versões alternativo, como um caminho ou parâmetro de consulta. - Ordem da política - Você pode enfrentar um comportamento inesperado se a
cors
política não for a primeira política na seção de entrada. Selecione Calcular política efetiva no editor de políticas para verificar a ordem de avaliação da política em cada escopo. Geralmente, apenas a primeiracors
política é aplicada. - Resposta vazia 200 OK - Em algumas configurações de política, certas solicitações de origem cruzada são concluídas com uma resposta vazia
200 OK
. Essa resposta é esperada quandoterminate-unmatched-request
é definida como seu valor padrão de e uma solicitação de entrada tem umOrigin
cabeçalho que não corresponde acors
uma origem permitida configuradatrue
na política.
Exemplo
Este exemplo demonstra como dar suporte a solicitações de comprovação, como aquelas com cabeçalhos personalizados ou métodos diferentes de GET
e POST
. Para oferecer suporte a cabeçalhos personalizados e outros verbos HTTP, use as allowed-methods
seções e allowed-headers
conforme mostrado no exemplo a seguir.
<cors allow-credentials="true">
<allowed-origins>
<!-- Localhost useful for development -->
<origin>http://localhost:8080/</origin>
<origin>http://example.com/</origin>
</allowed-origins>
<allowed-methods preflight-result-max-age="300">
<method>GET</method>
<method>POST</method>
<method>PATCH</method>
<method>DELETE</method>
</allowed-methods>
<allowed-headers>
<!-- Examples below show Azure Mobile Services headers -->
<header>x-zumo-installation-id</header>
<header>x-zumo-application</header>
<header>x-zumo-version</header>
<header>x-zumo-auth</header>
<header>content-type</header>
<header>accept</header>
</allowed-headers>
<expose-headers>
<!-- Examples below show Azure Mobile Services headers -->
<header>x-zumo-installation-id</header>
<header>x-zumo-application</header>
</expose-headers>
</cors>
Políticas relacionadas
Conteúdos relacionados
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transforme e proteja sua API
- Referência de política para uma lista completa de declarações de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Recompra de trechos de política
- Kit de ferramentas de política de Gerenciamento de API do Azure
- Criar políticas usando o Microsoft Copilot no Azure