O que são e como funcionam requisições preflight?

Requisição preflight

É uma requisição HTTP do método OPTIONS, enviada antes da requisição propriamente dita, com o objetivo de determinar se a última é de fato segura para envio.

Somente quando o servidor envia uma resposta positiva é que a requisição HTTP efetiva é realizada.

A requisição preflight contém metadados com informações como:

  • Origin: indica a origem da requisição (nome do servidor);

  • Access-Control-Request-Method: quais métodos HTTP serão utilizados;

  • Access-Control-Request-Headers: chaves que estarão presentes nos headers.

Comportamento

Conforme descrito na página sobre criação de recursos,

  • Caso você tenha implementado o método OPTIONS no recurso buscado, o fluxo definido é respeitado e a hierarquia de interceptors configurada é mantida.

  • Caso você não tenha implementado um método OPTIONS, os interceptors configurados no recurso all/all são desconsiderados e não são herdados pelo recurso buscado.

    Como resposta padrão, os seguintes headers são enviados:

    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 Acess-Control-Allow-Headers.

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