Estou usando a API Fetch do JavaScript assim:
fetch(URL)
Meu navegador (Chrome) parece adicionar automaticamente cabeçalhos If-None-Match
e If-Modified-Since
à solicitação. Embora esses cabeçalhos devam disparar solicitações de preflight de acordo com a especificação fetch (eu acho), nenhuma solicitação de preflight está sendo enviada. Isso é esperado quando o navegador adiciona automaticamente esses cabeçalhos em vez de eu adicioná-los à fetch
função?
Notei que, quando adiciono If-None-Match
cabeçalhos If-Modified-Since
manualmente à fetch
função, o navegador envia uma solicitação de pré-voo:
fetch(cdnUrl, {
"headers": {
"If-None-Match": "blah"
}
})
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests diz que para ser classificada como uma solicitação "simples" - e, assim, evitar o acionamento de uma solicitação pré-voo, uma solicitação deve atender a várias condições, incluindo esta:
Observe a frase
Como você notou, os cabeçalhos definidos automaticamente pelo navegador não contam como gatilhos de uma solicitação de pré-voo, e esse é um comportamento esperado.
Na minha humilde opinião, seria um pouco injusto para os desenvolvedores se os cabeçalhos definidos pelo navegador acionassem uma solicitação de pré-voo - isso poderia potencialmente quebrar implementações de código existentes se uma atualização do navegador repentinamente causasse cabeçalhos extras a serem enviados em uma solicitação de busca, o que então causaria uma solicitação de pré-voo que o servidor não estava esperando. Não sei ao certo, mas isso - mais o fato de que tais cabeçalhos não são modificáveis pelo usuário e, portanto, representam um problema muito menor - me pareceria uma boa razão para esse comportamento.