Configure Cross-Origin Resource Sharing (CORS)
Cross-Origin Resource Sharing (CORS) é um mecanismo que se utiliza de cabeçalhos HTTP para dar permissão de acesso a determinados recursos que estão em uma origem diferente do documento em uso.
Um exemplo de cross-origin request é uma página HTML servida a partir de um domínio “A” que solicita um arquivo, como um CSS stylesheet ou um JavaScript, por exemplo, servido a partir de um domínio “B”. Por questões de segurança, muitos navegadores restringem cross-origin HTTP requests iniciadas por scripts.
Para permitir o CORS em uma configuração para requisições não complexas, você deve adicionar o cabeçalho Access-Control-Allow-Origin
à resposta.
Já requisições HTTP complexas exigem cabeçalhos adicionais. Essas são requisições que podem envolver vários parâmetros, cabeçalhos, autenticação, corpos de requisição ou outras configurações especializadas. Qualquer requisição além de GET
, POST
e HEAD
pode ser considerada complexa.
Habilite permissão CORS para requisições HTTP não complexas
A primeira etapa para permitir o acesso CORS é criar uma regra no Rules Engine:
- Acesse o Azion Console.
- Selecione Products Menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Rules Engine, crie uma nova regra.
- Preencha os campos como no exemplo a seguir:
Campo | Valor |
---|---|
Name | GET/POST/HEAD CORS |
Description | Permite CORS para requisições GET em /sua-uri |
Phase | Response Phase |
Criteria | ${uri} starts with /sua-uri |
Behavior | Add Response Header Access-Control-Allow-Origin: * |
- Clique no botão Save.
Você acabou de criar uma regra para o compartilhamento de requisições não complexas com CORS.
- Acesse o Real-Time Manager (RTM).
- Selecione Products Menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Rules Engine, crie uma nova regra em Response Phase.
- Preencha os campos como no exemplo a seguir:
Campo | Valor |
---|---|
Name | GET/POST/HEAD CORS |
Description | Permite CORS para requisições GET em /sua-uri |
Criteria | ${uri} starts with /sua-uri |
Behavior | Add Response Header Access-Control-Allow-Origin: * |
- Clique no botão Save.
Você acabou de criar uma regra para o compartilhamento de requisições não complexas com CORS.
Habilite permissão CORS para requisições HTTP complexas
No exemplo a seguir, o CORS está sendo permitido por meio do método OPTIONS
. Para criar uma nova regra que permita habilitar o compartilhamento de recursos por meio de requisições complexas, siga as etapas:
- Acesse o Azion Console.
- Selecione Products Menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Rules Engine, crie uma nova regra.
- Preencha os campos:
Campo | Valor |
---|---|
Name | OPTIONS CORS |
Description | Permite CORS para OPTIONS em /sua-uri e outras requisições não complexas |
Phase | Response Phase |
Criteria | ${uri} starts with /your-uri |
Behavior | Add Response Header Access-Control-Allow-Origin: * Add Response Header Access-Control-Allow-Headers: Content-Type, Authorization Add Response Header Access-Control-Request-Method: POST, GET, OPTIONS, HEAD Add Response Header Content-Type: application/json Add Response Header Allow: POST, GET, OPTIONS, HEAD Add Response Header Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD |
- Clique no botão Save.
- Acesse o Real-Time Manager (RTM).
- Selecione Products Menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Rules Engine, crie uma nova regra em Response Phase.
- Preencha os campos:
Campo | Valor |
---|---|
Name | OPTIONS CORS |
Description | Permite CORS para OPTIONS em /sua-uri e outras requisições não complexas |
Criteria | ${uri} starts with /your-uri |
Behavior | Add Response Header Access-Control-Allow-Origin: * Add Response Header Access-Control-Allow-Headers: Content-Type, Authorization Add Response Header Access-Control-Request-Method: POST, GET, OPTIONS, HEAD Add Response Header Content-Type: application/json Add Response Header Allow: POST, GET, OPTIONS, HEAD Add Response Header Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD |
- Clique no botão Save.
Habilite permissão CORS para origens específicas
Para ativar o CORS em uma configuração para servidores de origem específicos, você precisará ativar o módulo Application Accelerator:
- Acesse o Azion Console.
- Selecione Products menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Main Settings, ative o módulo Application Accelerator.
- Clique no botão Save.
- Acesse o Real-Time Manager (RTM).
- Selecione Products menu > Edge Application.
- Selecione a aplicação com a qual deseja trabalhar.
- Na aba Main Settings, ative o módulo Application Accelerator.
- Clique no botão Save.
Agora você precisa criar uma regra que processe requisições de várias origens:
- Vá para a aba Rules Engine.
- Clique no botão + Rule.
- Preencha os campos como no exemplo a seguir, que habilita CORS para requisições complexas:
Campo | Valor |
---|---|
Name | CORS para múltiplas origens |
Phase | Response Phase |
Criteria | ${http_origin} is equal http://seu.domain1.com OR ${http_origin} is equal http://seu.domain2.com OR ${http_origin} is equal http://seu.domain3.com |
Behavior | Add Response Header Access-Control-Allow-Origin: * Add Response Header Access-Control-Allow-Headers: Content-Type, Authorization Add Response Header Access-Control-Request-Method: POST, GET, OPTIONS, HEAD Add Response Header Content-Type: application/json Add Response Header Allow: POST, GET, OPTIONS, HEAD Add Response Header Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD |
- Clique no botão Save.
- Vá para a aba Rules Engine.
- Clique no botão New Rule e selecione Response Phase.
- Preencha os campos como no exemplo a seguir, que habilita CORS para requisições complexas:
Campo | Valor |
---|---|
Name | CORS para múltiplas origens |
Criteria | ${http_origin} is equal http://seu.domain1.com OR ${http_origin} is equal http://seu.domain2.com OR ${http_origin} is equal http://seu.domain3.com |
Behavior | Add Response Header Access-Control-Allow-Origin: * Add Response Header Access-Control-Allow-Headers: Content-Type, Authorization Add Response Header Access-Control-Request-Method: POST, GET, OPTIONS, HEAD Add Response Header Content-Type: application/json Add Response Header Allow: POST, GET, OPTIONS, HEAD Add Response Header Access-Control-Allow-Methods: POST, GET, OPTIONS, HEAD |
- Clique no botão Save.