---
name: azion-habilite-cors-em-uma-aplicacao
description: >-
  Adicione regras na fase de resposta que enviam headers CORS para requisições GET, POST e HEAD, requisições complexas ou uma lista de origens permitidas.
---

# Habilite CORS em uma aplicação

Você pode habilitar Cross-Origin Resource Sharing (CORS) em uma [aplicação](/pt-br/documentacao/plataforma/applications/) pelo Azion Console, com regras na fase de resposta do [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine/). Cada seção cria uma regra que adiciona headers CORS às respostas da aplicação.

CORS usa headers HTTP para dar a um user agent acesso a recursos em um servidor de origem diferente do servidor do documento atual. Por exemplo, uma página HTML servida pelo domínio A requisita uma folha de estilo CSS ou um arquivo JavaScript do domínio B. Por motivos de segurança, a maioria dos navegadores bloqueia as requisições HTTP cross-origin que scripts iniciam. Os headers CORS de uma resposta indicam ao navegador quais dessas requisições permitir.

Uma requisição que usa `GET`, `POST` ou `HEAD` precisa apenas do header `Access-Control-Allow-Origin` na resposta. Qualquer outra requisição pode ser considerada complexa. O mesmo vale para uma requisição que envolve vários parâmetros, headers, autenticação, um corpo de requisição ou outra configuração especializada. Uma requisição complexa precisa de headers adicionais.

---

## Pré-requisitos

- Uma aplicação que um [workload](/pt-br/documentacao/plataforma/workloads/) entrega, com uma regra que envia as requisições dela para uma origem. Para criar os dois, consulte [Primeiros passos com Applications](/pt-br/documentacao/plataforma/applications/primeiros-passos/).
- Acesso ao Azion Console. Para entrar, consulte [Como acessar o Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

---

## Permita requisições cross-origin GET, POST e HEAD

A regra desta seção adiciona `Access-Control-Allow-Origin: *` às respostas de todo caminho que começa com `/your-uri`. O valor `*` permite que uma página de qualquer origem leia essas respostas. Substitua `/your-uri` pelo caminho que recebe as requisições cross-origin.

Para criar a regra pelo Azion Console:

1. **Abra a aplicação**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação**.

2. **Selecione a aba Rules Engine**

3. **Selecione + Rule**

4. **Nomeie a regra**

   Na seção **General**, insira `GET/POST/HEAD CORS` em **Name**.

5. **(Opcional) Descreva a regra**

   Em **Description**, insira `Allows CORS for GET requests in /your-uri`.

6. **Selecione Response Phase**

   Na seção **Phase**, selecione **Response Phase**. A fase de uma regra não pode mudar depois que você cria a regra.

7. **Defina o critério**

   Na seção **Criteria**, selecione `${uri}` como variável e `starts_with` como operador.

8. **Insira o caminho**

   Insira `/your-uri` como argumento.

9. **Adicione o behavior de header**

   Na seção **Behaviors**, selecione o behavior que adiciona um header de resposta. A API o chama de `add_response_header`.

10. **Insira o header**

    Insira `Access-Control-Allow-Origin: *` como argumento do behavior.

11. **Selecione Save**

A regra aparece na aba **Rules Engine**, em **Response**. As respostas aos caminhos que começam com `/your-uri` carregam `Access-Control-Allow-Origin: *`. Para o formato que o argumento de um header usa, consulte [Add Request Header](/pt-br/documentacao/plataforma/applications/rules-engine/#add-request-header).

---

## Permita requisições cross-origin complexas

Uma requisição complexa precisa de mais headers do que `Access-Control-Allow-Origin`. A regra desta seção permite o método `OPTIONS` nos caminhos que começam com `/your-uri`. Os headers dela também cobrem requisições `GET`, `POST` e `HEAD` para esses caminhos. A regra adiciona estes cinco headers a cada resposta:

```text
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Request-Method: POST, GET, OPTIONS, HEAD
Allow: POST, GET, OPTIONS, HEAD
Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
```

Para criar a regra pelo Azion Console:

1. **Abra a aplicação**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação**.

2. **Selecione a aba Rules Engine**

3. **Selecione + Rule**

4. **Nomeie a regra**

   Na seção **General**, insira `OPTIONS CORS` em **Name**.

5. **(Opcional) Descreva a regra**

   Em **Description**, insira `Allows CORS for OPTIONS requests in /your-uri, as well as non-complex requests`.

6. **Selecione Response Phase**

   Na seção **Phase**, selecione **Response Phase**. A fase de uma regra não pode mudar depois que você cria a regra.

7. **Defina o critério**

   Na seção **Criteria**, selecione `${uri}` como variável e `starts_with` como operador.

8. **Insira o caminho**

   Insira `/your-uri` como argumento.

9. **Adicione o behavior de header**

   Na seção **Behaviors**, selecione o behavior que adiciona um header de resposta. A API o chama de `add_response_header`.

10. **Insira o primeiro header**

    Insira `Access-Control-Allow-Origin: *` como argumento do behavior.

11. **Adicione os outros quatro headers**

    Para cada header restante da lista, selecione **+ Add Behavior**. Selecione o mesmo behavior e insira o header como argumento dele.

12. **Selecione Save**

A regra aparece na aba **Rules Engine**, em **Response**. As respostas aos caminhos que começam com `/your-uri` carregam os cinco headers.

Para permitir outros tipos de requisição, altere os valores de `Allow`, `Access-Control-Allow-Methods` e `Access-Control-Allow-Origin`. Para definir o formato da resposta, adicione um header `Content-Type` à mesma regra.

---

## Permita requisições cross-origin de origens específicas

A regra desta seção adiciona os headers CORS apenas quando uma requisição vem de uma de três origens. Ela lê o header de requisição `Origin` pela variável `${http_origin}`, com um critério por origem, unidos por **Or**. Substitua as três origens pelas que a sua aplicação aceita:

```text
http://www.example.com
http://app.example.com
http://example.org
```

Uma regra que permite origens específicas exige [Application Accelerator](/pt-br/documentacao/plataforma/applications/application-accelerator/configuracoes/#ativacao-do-modulo) na aplicação.

Para ativar Application Accelerator pelo Azion Console:

1. **Abra a aplicação**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação**.

2. **Selecione a aba Main Settings**

3. **Ative Application Accelerator**

   Na seção **Modules**, ative **Application Accelerator**.

4. **Selecione Save**

A aplicação executa com Application Accelerator ativado. Ativar um Produto pode gerar custos relacionados ao uso. Para mais informações, consulte [Preços](/pt-br/documentacao/fundamentos/precos/).

A regra adiciona os mesmos cinco headers de uma regra para requisições complexas:

```text
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Request-Method: POST, GET, OPTIONS, HEAD
Allow: POST, GET, OPTIONS, HEAD
Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD
```

Para criar a regra pelo Azion Console:

1. **Abra a aba Rules Engine**

   Acesse [Azion Console](https://console.azion.com/) > **Applications** > **sua aplicação** e selecione a aba **Rules Engine**.

2. **Selecione + Rule**

3. **Nomeie a regra**

   Na seção **General**, insira `Multiple origins CORS` em **Name**.

4. **Selecione Response Phase**

   Na seção **Phase**, selecione **Response Phase**. A fase de uma regra não pode mudar depois que você cria a regra.

5. **Defina o primeiro critério**

   Na seção **Criteria**, selecione `${http_origin}` como variável e `is_equal` como operador.

6. **Insira a primeira origem**

   Insira `http://www.example.com` como argumento.

7. **Adicione as outras duas origens**

   Para cada origem restante, selecione **Or**. Selecione `${http_origin}` e `is_equal` de novo e insira a origem como argumento.

8. **Adicione o behavior de header**

   Na seção **Behaviors**, selecione o behavior que adiciona um header de resposta. A API o chama de `add_response_header`.

9. **Insira o primeiro header**

   Insira `Access-Control-Allow-Origin: *` como argumento do behavior.

10. **Adicione os outros quatro headers**

    Para cada header restante da lista, selecione **+ Add Behavior**. Selecione o mesmo behavior e insira o header como argumento dele.

11. **Selecione Save**

A regra aparece na aba **Rules Engine**, em **Response**. Uma resposta carrega os cinco headers apenas quando o header `Origin` da requisição corresponde exatamente a uma das três origens. Para saber como os critérios se combinam com **And** e **Or**, consulte [Condicionais](/pt-br/documentacao/plataforma/applications/rules-engine/).

---

## Próximos passos

- [Rules Engine para Applications](/pt-br/documentacao/plataforma/applications/rules-engine.md#behaviors): Cada behavior que uma regra de aplicação pode executar, por fase, e o Produto que cada um exige.
- [Crie regras de request e response](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/rules-engine.md): Crie regras para a fase de requisição e a fase de resposta de uma aplicação.
- [Configurações do Application Accelerator](/pt-br/documentacao/plataforma/applications/application-accelerator/configuracoes.md): O que Application Accelerator adiciona a uma aplicação e as regras que o exigem.
- [Depure regras criadas com Rules Engine](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/debug-regras.md): Descubra se uma regra foi executada em uma requisição, pela GraphQL API, pelo Data Stream ou pelo Real-Time Events.
