# Como utilizar a política CORS na Digibee Integration Platform

**CORS (Cross-Origin Resource Sharing)** é uma política de segurança implementada pelos navegadores da web que permite que um servidor restrinja quais origens podem acessar seus recursos por meio de solicitações HTTP.

É recomendado o uso do CORS sempre que um aplicativo web precisar fazer requisições HTTP para recursos localizados em um domínio ou porta diferente do onde o aplicativo está sendo hospedado. Isso ajuda a proteger o servidor contra ataques maliciosos que possam tentar acessar recursos indevidamente.

## Como funciona

Quando uma página da web faz uma requisição para um domínio diferente, o navegador enviará primeiro uma **solicitação de&#x20;*****Preflight*** para o servidor desse domínio. Nesta “requisição de teste”, o servidor envia um conjunto de cabeçalhos (headers) que indicam se a solicitação é permitida. Caso a solicitação seja permitida, o navegador enviará a solicitação real.

### Cabeçalhos (Headers)

Alguns dos cabeçalhos mais comuns usados ​​no CORS incluem:

* **Access-Control-Allow-Origin:** Especifica quais origens que tem permissão para acessar o recurso. Pode ser um valor único (valor: `*`), que permite que qualquer origem acesse o recurso, ou uma lista de domínios específicos.
* **Access-Control-Allow-Methods:** Especifica quais métodos HTTP são permitidos na solicitação de recurso (por exemplo, `GET`, `POST`, `DELETE`).
* **Access-Control-Allow-Headers:** Especifica quais cabeçalhos (headers) personalizados são permitidos na solicitação de recurso. É necessário para que um cabeçalho personalizado como `Authorization` possa ser enviado com a solicitação.
* **Access-Control-Expose-Headers:** Especifica quais cabeçalhos personalizados são expostos para a solicitação de recurso.
* **Access-Control-Allow-Credentials:** Especifica se o recurso pode ser acessado com credenciais (por exemplo, cookies, cabeçalhos de autorização, e assim por diante) pela solicitação de origem.

## CORS na Digibee Integration Platform

A política CORS está disponível para os triggers:

* [**HTTP**](/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/http.md)
* [**HTTP File (Download e Upload)**](/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/http-file.md)
* [**REST**](/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/rest.md)

Pode-se utilizar o CORS individualmente nos pipelines, ou pode ser configurado para todo o realm, através da [Configuração Global de CORS](/documentation/developer-guide/pt-br/platform-administration/governance/policies/transformation/cors-http-header.md).

## Exemplo

### Configuração da política CORS no trigger do pipeline

Para este exemplo:

* O [**REST Trigger**](/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/rest.md) é configurado selecionando os métodos `GET` e `OPTIONS`.
* Durante a configuração, o CORS é ativado e os CORS headers definidos:
  * **Access-Control-Allow-Origin** para aceitar qualquer origem (valor: `*`).
  * **Access-Control-Allow-Methods** para aceitar apenas o método `GET`.
  * **Access-Control-Allow-Headers** para aceitar requisições que possam conter apenas os headers `Authorization`, `Content-Type` e `apikey`.

<figure><img src="/files/jnRw8jHhqNwClHSfPQ70" alt=""><figcaption></figcaption></figure>

<details>

<summary>Exemplo 1: Requisição com sucesso (autorizado pelo navegador)</summary>

É efetuada uma requisição através do navegador Google Chrome, utilizando o método `GET`, e os headers `Content-Type` e `apikey`.

<figure><img src="/files/zc8oyyWrQ5MHJHBCBCBi" alt=""><figcaption></figcaption></figure>

O navegador faz o **Preflight** para o endpoint da Digibee utilizando o método `OPTIONS`, que retorna os headers CORS. Como a requisição atende a política CORS configurada no trigger do pipeline, você está autorizado a seguir com a requisição `GET`.

<figure><img src="/files/ibBOZ1zY0BdIxZNR50YG" alt=""><figcaption></figcaption></figure>

A requisição `GET` retornou com sucesso e agora é possível seguir com o fluxo normal do pipeline.

</details>

<details>

<summary>Exemplo 2: Requisição sem sucesso (negado pelo navegador)</summary>

A mesma requisição é realizada, porém agora adicionando o header `test`:

<figure><img src="/files/6BJ2Zrfev188iQcjfXKX" alt=""><figcaption></figcaption></figure>

Como o CORS header `test` não foi autorizado, a requisição foi bloqueada pela política CORS e a requisição `GET` não chegará na Digibee.

<figure><img src="/files/TbetkoRI1Yf0YsU5rLiR" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Exemplo 3: Requisição sem sucesso (negado pelo navegador)</summary>

Neste exemplo os headers estão de acordo com a política CORS, porém o método `POST` utilizado pela chamada no navegador não está configurado no trigger. Isso vai gerar um erro **404 Not found**.

<figure><img src="/files/Q23ZcMsujDRDmCKMO3Qp" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Io8S85xitdOO68TcWMPk" alt=""><figcaption></figcaption></figure>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/troubleshooting/pt-br/integration-guides/how-to-cors-policy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
