Requisição Preflight
Uma requisição preflight de CORS é uma requisição de CORS que verifica se o protocolo CORS é entendido e se o servidor aguarda o método e cabeçalhos('headers') especificados.
É uma requisição OPTIONS
, que usa três cabeçalhos de solicitação HTTP: Access-Control-Request-Method
, Access-Control-Request-Headers
, e o cabeçalho Origin
.
Uma requisição preflight é emitida automaticamente por um navegador, quando necessário. Geralmente, os desenvolvedores front-end não precisam criar essas solicitações. Ela acontece quando a requisição é qualificada "para ser preflighted" e omitida para requisições simples.
Por exemplo, o cliente pode perguntar ao servidor se este permitiria uma requisição DELETE
, antes de enviá-la, usando uma requisição preflight:
OPTIONS /resource/foo Access-Control-Request-Method: DELETE Access-Control-Request-Headers: origin, x-requested-with Origin: https://foo.bar.org
Se o servidor permitir, ele responderá à requisição preflight: com um cabeçalho de resposta Access-Control-Allow-Methods
, que lista DELETE:
HTTP/1.1 204 No Content Connection: keep-alive Access-Control-Allow-Origin: https://foo.bar.org Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE Access-Control-Max-Age: 86400
A resposta da requisição preflight pode ser opcionalmente cacheada para requisições realizadas na mesma url usando o cabeçalho Access-Control-Max-Age como no exemplo acima.