editar 2018-09-13 : adicionadas algumas precisões sobre essa solicitação antes do voo e como evitá-la no final desta resposta.
OPTIONS
solicitações são o que chamamos de pre-flight
solicitações Cross-origin resource sharing (CORS)
.
Eles são necessários quando você faz solicitações de diferentes origens em situações específicas.
Essa solicitação de pré-vôo é feita por alguns navegadores como uma medida de segurança para garantir que a solicitação que está sendo feita seja confiável pelo servidor. Significando que o servidor entende que o método, a origem e os cabeçalhos enviados na solicitação são seguros para agir.
Seu servidor não deve ignorar, mas manipular essas solicitações sempre que você estiver tentando fazer solicitações de origem cruzada.
Um bom recurso pode ser encontrado aqui http://enable-cors.org/
Uma maneira de lidar com eles para ficar confortável é garantir que, para qualquer caminho com o OPTIONS
método, o servidor envie uma resposta com esse cabeçalho
Access-Control-Allow-Origin: *
Isso informará ao navegador que o servidor está disposto a responder a solicitações de qualquer origem.
Para obter mais informações sobre como adicionar suporte CORS ao seu servidor, consulte o fluxograma a seguir
http://www.html5rocks.com/static/images/cors_server_flowchart.png
editar 2018-09-13
A OPTIONS
solicitação CORS é acionada apenas em alguns casos, conforme explicado nos documentos MDN :
Algumas solicitações não acionam um preflight do CORS. Essas são chamadas de "solicitações simples" neste artigo, embora a especificação Fetch (que define o CORS) não use esse termo. Uma solicitação que não aciona uma verificação prévia do CORS - a chamada "solicitação simples" - é aquela que atende a todas as seguintes condições:
Os únicos métodos permitidos são:
Além dos cabeçalhos definidos automaticamente pelo agente do usuário (por exemplo, Connection, User-Agent ou qualquer outro cabeçalho com nomes definidos na especificação Buscar como um "nome de cabeçalho proibido"), os únicos cabeçalhos que podem ser definidos manualmente são aqueles que a especificação Fetch define como sendo um "cabeçalho de solicitação listado na lista de segurança do CORS", que são:
- Aceitar
- Accept-Language
- Idioma do Conteúdo
- Tipo de conteúdo (mas observe os requisitos adicionais abaixo)
- DPR
- Downlink
- Guardar dados
- Largura da janela de visualização
- Largura
Os únicos valores permitidos para o cabeçalho Content-Type são:
- application / x-www-form-urlencoded
- multipart / form-data
- texto / simples
Nenhum ouvinte de evento é registrado em nenhum objeto XMLHttpRequestUpload usado na solicitação; estes são acessados usando a propriedade XMLHttpRequest.upload.
Nenhum objeto ReadableStream é usado na solicitação.