CORS

Cross-Origin Resource Sharing (CORS), ou Compartilhamento de recursos com origens diferentes, é um mecanismo que permite que scripts em execução interajam com recursos de origens (domínio, porta e protocolo) distintas da sua.

Alguns métodos de requisição HTTP podem interferir em dados do usuário. Nesses casos, é preciso obter uma "aprovação" antecipada. Isso é feito por meio de requisições preflight, que são requisições HTTP de método OPTIONS que fazem um envio prévio da solicitação, informando os métodos suportados e outras informações no header.

Implementando o método OPTIONS

Para dar suporte ao CORS, é preciso ter um método OPTIONS implementado.

Ao criar o método OPTIONS, utilize o mesmo path dos demais métodos e adicione um interceptor de Mock.

O interceptor deve retornar status 200 e os headers:

  • Access-Control-Allow-Origin: aqui você pode usar '*' (qualquer origem) ou especificar a origem com permissão para acessar o recurso.

  • Access-Control-Allow-Methods: liste os métodos que você utiliza, no formato <método>, <método>, …​.

Nota:

  • Caso você não implemente o método OPTIONS:

    • os interceptors configurados no recurso all/all serão desconsiderados e não serão herdados pelo recurso buscado;

    • requisições preflight serão respondidas com:

      chave: valor

      Access-Control-Allow-Origin: *
      Access-Control-Allow-Methods: HEAD, DELETE, POST, GET, OPTIONS, PUT, PATCH
    • caso a requisição preflight contenha o cabeçalho Access-Control-Request-Headers, a resposta incluirá o seu conteúdo no cabeçalho de chave-valor Access-Control-Allow-Headers;

    • caso não exista uma configuração prévia e o header Origin não vier vazio, o valor retornado no header Access-Control-Allow-Origin será o mesmo recebido no header Origin.

Thanks for your feedback!
EDIT
How useful was this article to you?