Percebi uma mensagem estranha de cuidado ao analisar os recursos baixados usando o Google chrome inspector ( F12):
Os cabeçalhos provisórios do cuidado são mostrados
Encontrei algo possivelmente relevante, Painel de Rede: adicione cuidado com os cabeçalhos de solicitação provisórios , mas não consegui entendê-lo completamente. Podem ser encontradas perguntas relacionadas às solicitações de bloco do Chrome e ao XMLHttpRequest não pode carregar. Os recursos descarregados mostram cautela: os cabeçalhos provisórios são mostrados .
Semelhante à primeira pergunta , meu recurso foi bloqueado, mas posteriormente carregado automaticamente o mesmo recurso. Diferente da segunda pergunta , não quero consertar nada; Quero saber o que essa mensagem significa e por que a recebi.
fonte
chrome://flags/#site-isolation-trial-opt-out
Respostas:
O recurso pode estar sendo bloqueado por uma extensão (AdBlock no meu caso).
A mensagem está lá porque a solicitação para recuperar esse recurso nunca foi feita, portanto os cabeçalhos mostrados não são reais. Conforme explicado no problema que você referenciou, os cabeçalhos reais são atualizados quando o servidor responde, mas não há resposta se a solicitação foi bloqueada.
A maneira como descobri a extensão que estava bloqueando meu recurso foi através da ferramenta net-internals no Chrome:
Para as versões mais recentes do chrome
chrome://net-export/
na barra de endereço e pressione Enter.Para versões anteriores do chrome
chrome://net-internals
na barra de endereço e pressione Enter.fonte
Eu acredito que isso acontece quando a solicitação real não é enviada. Geralmente acontece quando você está carregando um recurso em cache.
fonte
Para o chrome v72 +, o que resolveu para mim foi apenas isso:
vá
chrome://flags/
e desative essas 3 bandeirasou você pode fazer isso na linha de comando:
por que isso aconteceu?
é perigoso mudar isso?
fonte
localhost:8080
egoogle.com
(!?). A desativação do isolamento do site corrigiu google.com, mas não o host local. Desabilitar apenas as outras duas opções o corrigia para todos os casos.Encontrei esse problema e consegui identificar uma causa específica, que não é mencionada acima nas respostas ou na pergunta.
Estou executando uma pilha js completa, front-end angular e back-end de nó no SSL, e a API está em um domínio diferente em execução na porta 8081, por isso estou fazendo solicitações CORS e withCredentials enquanto estou removendo um cookie de sessão da API
Tão especificamente meu cenário foi: solicitação POST, com credenciais para a porta 8081, causou a mensagem "CUIDADO: cabeçalhos provisórios são mostrados" no inspetor e, é claro, também bloqueou a solicitação.
Minha solução foi configurar o apache para proxy transmitir a solicitação da porta SSL usual de 443 para a porta SSL do nó 8081 (o nó deve estar em uma porta superior, pois não pode ser executado como raiz no prod). Acho que o Chrome não gosta de solicitações SSL para portas SSL não convencionais, mas talvez sua mensagem de erro possa ser mais específica.
fonte
'/graphql': { target: 'http://10.10.1.38:4000', changeOrigin: true }
"proxy": "http://192.168.98.110:1234"
ao meupackage.json
em um projeto create-react-app. Diferentemente da resposta, não estou usando HTTPS em nenhum lugar do desenvolvedor, mas isso foi necessário porque meu aplicativo e API estão em IPs diferentes.Isso também pode acontecer (apenas para solicitações de origem cruzada) devido a um novo recurso chamado isolamento do site.
Esta página detalha o problema e uma solução alternativa . Qual é ir para
chrome://flags/#site-isolation-trial-opt-out
chrome e alterar essa configuração para "Opt-out" e recarregar o chrome.É um problema conhecido . No entanto, essa página diz que foi corrigido no chrome 68, mas estou executando o chrome 68 e ainda tenho o problema.
fonte
Os recursos HTTP / 2 Pushed produzirão
Provisional headers are shown
no inspetor a mesma teoria que @wvega postada em sua resposta acima .por exemplo: Como o servidor enviou os recursos ao cliente ( antes que o cliente os solicitasse ), o navegador mantém os recursos em cache e, portanto, o cliente nunca faz / precisa de solicitações; Então porque...
fonte
Minha situação está relacionada à origem .
Situação: o navegador envia a
OPTIONS
solicitação antes de enviar a solicitação real, comoGET
ouPOST
. O desenvolvedor de back-end esquece de lidar com aOPTIONS
solicitação, deixando passar pelo código de serviço, tornando o tempo de processamento muito longo. Mais do que a configuração de tempo limite que escrevi naaxios
inicialização, que é de 5000 milissegundos. Portanto, a solicitação real não pôde ser enviada e, em seguida, encontrei oprovisional headers are shown
problema.Solução: quando se trata de
OPTIONS
solicitar, a API de back-end retorna o resultado, agiliza a solicitação e a solicitação real pode ser enviada antes do tempo limite.fonte
Duvido que minha resposta chegue a tempo de ajudá-lo, mas outros podem achar útil. Eu experimentei um problema semelhante com um script jQuery Ajax Post que eu criei.
Aconteceu que eu tinha um erro de digitação no atributo href da tag A que eu estava usando para disparar a postagem. Eu digitei href = " javacsript:; " (revertendo os 's' e os 'c') .. isso fez com que o script tentasse atualizar a página enquanto a postagem estava tentando disparar. corrigido o erro de digitação e funcionou perfeitamente bem para mim.
fonte
Esta mensagem pode ocorrer quando o site está protegido usando o HSTS . Em seguida, quando alguém vincula à versão HTTP da URL, o navegador, conforme instruído pelo HSTS, não emite uma solicitação HTTP, mas redireciona internamente para o recurso HTTPS com segurança. Isso evita ataques de downgrade HTTPS, como sslstrip .
fonte
Talvez porque você tenha enviado uma solicitação do Ajax, ao mesmo tempo em que você pula sua página para outra usando location.href ou algo parecido. Portanto, a solicitação anterior falhou.
fonte
Essa mensagem de cuidado também ocorre se a resposta for inválida e, portanto, descartada pelo navegador.
No meu caso, a solicitação foi enviada corretamente ao servidor, o código do servidor produziu um erro e meu tratamento de erro personalizado retornou a mensagem de erro no campo Mensagem de status HTTP. Mas esse erro não foi recebido no lado do cliente, devido a caracteres inválidos na mensagem de erro (descrita aqui http://aspnetwebstack.codeplex.com/workitem/1386 ) que resultaram em cabeçalhos de resposta corrompidos.
fonte
Corri para esse problema com uma chamada AJAX que nunca seria concluída. Eu segui o conselho da wvega e dica sobre depuração
chrome://net-internals
para, eventualmente, determinar outraclick
manipulador de eventos na página, ouvindo em um nó pai, estava fazendo com que o navegador navegasse para a mesma URL (por isso não era facilmente perceptível).A solução foi adicionar
event.stopPropagation()
umclick
manipulador no botão de envio do formulário para impedir que o clique borbulhasse no DOM e cancelasse a solicitação AJAX em andamento (iniciada por umsubmit
manipulador noform
).fonte
Recordei disso recentemente (hoje, de fato), em que uma chamada AJAX foi enviada ao servidor e o Chrome dispara o "Cuidado: os cabeçalhos provisórios são mostrados". No script PHP do lado do servidor, existem consultas MySQL que podem ser praticamente instantâneas ou levar alguns segundos, dependendo do cenário especificado. A resposta do meu servidor não é enviada de volta ao navegador até que as consultas sejam concluídas. Descobri que esse erro ocorre somente quando consultas demoradas (até alguns segundos no total) estão sendo feitas e impedem que a resposta seja enviada de volta.
Meu cenário envolve a possibilidade muito rara de alterar uma tabela adicionando / removendo centenas de colunas para a saída do modelo climático ... portanto, o atraso da resposta é repetido através de um loop de consultas ALTER TABLE.
fonte
Um motivo comum para isso acontecer é se você está acompanhando um evento e não impede a ação padrão. Por exemplo, se você tiver um evento de clique, convém incluir:
ou
Caso contrário, você verá os avisos provisórios dos cabeçalhos e o status "cancelado" na guia Rede do seu console da web.
fonte
No meu caso, era apenas um caminho de conjunto falso para um recurso (svg / img)
fonte
Esse problema ocorreu quando eu estava enviando um cabeçalho de autorização HTTP inválido. Eu esqueci de codificar base64.
fonte
Me deparei com isso e ele desapareceu quando mudei de https para http. Os certificados SSL que usamos no dev não são verificados por terceiros. Eles são apenas certificados de desenvolvimento gerados localmente.
As mesmas chamadas funcionam bem no Chrome Canary e no Firefox. Esses navegadores não parecem ser tão rigorosos quanto ao certificado SSL como o Chrome. As chamadas falhariam no Chrome com a mensagem "CUIDADO: cabeçalhos provisórios ...".
Penso / espero que, quando usarmos um certificado SSL legítimo no palco e no produto, não veremos mais esse comportamento no Chrome.
fonte
Apenas jogando meus dois centavos. Estou escrevendo um aplicativo Web usando solicitações CORS e um serviço Web RESTful completo. Eu descobri que o chrome lançará esse erro quando eu tiver uma exceção não entregue ou um erro do PHP lançado. Apenas coloque alguém que tenha problemas. Descobri que, quando isso acontece, posso iniciar o aplicativo "Postman - Rest Client" do aplicativo Chrome e executar exatamente a mesma solicitação, mas no aplicativo Chrome, na verdade, receberei o erro PHP que está sendo lançado, em vez desse erro não descritivo.
fonte
Eu corri esse problema ao tentar carregar o main.js para exigir js pela segunda vez depois de fazer alterações como resultado de um erro. Acabei de ativar as Configurações das Ferramentas do Desenvolvedor "Desativar cache (quando o DevTools está aberto)". e isso fez o charme.
fonte
Outro cenário possível que eu já vi - a mesma solicitação exata está sendo enviada novamente após alguns milissegundos (provavelmente devido a um bug no lado do cliente).
Nesse caso, você também verá que o status da primeira solicitação é "cancelado" e que a latência é de apenas alguns milissegundos.
fonte
Isso estava acontecendo para mim, quando eu tinha um link para download e, depois de clicar nele, estava tentando também capturar o clique com jquery e enviar uma solicitação ajax. O problema ocorreu porque, quando você clica no link de download, sai da página, mesmo que não pareça. Se não houver transferência de arquivos, você verá a página solicitada. Por isso, defina um target = "_ blank" para evitar esse problema.
fonte
Eu recebi esse erro quando tentei imprimir uma página em um pop-up. A caixa de diálogo de impressão foi exibida e ela ainda aguarda minha aceitação ou cancelamento da impressão no pop-up enquanto a página mestra também estava aguardando em segundo plano, mostrando a mensagem CUIDADO quando tentei clicar em outro link.
No meu caso, a solução foi remover o
window.print ();
script que estava sendo executado na<body>
janela pop-up para impedir o diálogo de impressão.fonte
Vi isso acontecer quando o número de conexões com o meu servidor excedeu o limite máximo de 6 conexões por servidor do Chrome.
fonte
Use este código punho do seu código:
Isso funciona para mim.
fonte
Aqui está outra solução.
Se você encontrar esse problema com a chamada $ ajax (), adicione
http://
antes que o serverhost resolva o seu problema.fonte
Se você estiver desenvolvendo um aplicativo Asp.Net Mvc e estiver tentando retornar um
JsonResult
em seu controlador, adicioneJsonRequestBehavior.AllowGet
-o aoJson
método. Isso consertou para mim.fonte
A mensagem "Cuidado: os cabeçalhos provisórios são mostrados" pode ser exibida quando o site hospedado em HTTPS chama chamadas para o WebApi hospedado em HTTP. Você pode verificar tudo se todas as suas APIs são HTTPS. O navegador impede fazer uma chamada para recursos não seguros. Você pode ver uma mensagem semelhante no seu código ao usar a API FETCH para dominar com HTTP.
Conteúdo misto: a página em ' https://website.com ' foi carregada por HTTPS, mas solicitou um recurso não seguro ' http://webapi.com '. Esta solicitação foi bloqueada; o conteúdo deve ser veiculado por HTTPS.
fonte
Eu tive um problema semelhante com meu aplicativo MEAN. No meu caso, o problema estava ocorrendo em apenas uma solicitação de obtenção. Eu tentei remover o adblock, tentei limpar o cache e tentei com diferentes navegadores. Nada ajudou.
finalmente, descobri que a API estava tentando retornar um grande objeto JSON. Quando tentei enviar um objeto pequeno, ele estava funcionando bem. Finalmente, mudei minha implementação para retornar um buffer em vez de um JSON.
Desejo expressJS para lançar um erro neste caso.
fonte
Esse problema também ocorrerá ao usar alguns pacotes como
webpack-hot-middleware
e abrir várias páginas ao mesmo tempo.webpack-hot-middleware
criará uma conexão para cada página para ouvir as alterações de código e depois atualizar a página. Cada navegador possui umamax-connections-per-server
limitação de 6 para o Chrome; portanto, se você já abriu mais de 6 páginas no Chrome, a nova solicitação será suspensa até você fechar algumas páginas.fonte
No meu caso, a causa foi a extensão do AdBlock.
A solicitação ao servidor foi concluída e eu recebi a resposta, mas não consegui ver os cookies de solicitação devido a "Cabeçalhos provisórios .." sendo mostrados nas ferramentas de desenvolvimento. Depois de desativar o AdBlock para o site, o aviso foi embora e as ferramentas de desenvolvimento começaram a mostrar os cookies novamente.
Para que a alteração tenha efeito, também foi necessário fechar as ferramentas de desenvolvimento e atualizar a página
fonte