Impedir a mensagem "documento expirado" e apenas mostrar a página expirada?


13

Quando envio um formulário e pressiono novamente, às vezes recebo a mensagem "Documento expirado" em vez da última página.

insira a descrição da imagem aqui

Eu costumava receber a seguinte caixa de mensagem irritante (que agora aparece após um clique em "Tente novamente"):

insira a descrição da imagem aqui

Agora, eu não sei o que isso significa e por que o Firefox mostra esta mensagem. No entanto, quero apenas ver a última página visualizada - exatamente como foi exibida um segundo atrás. Sem pop-up e sem recarregamento para refletir o novo estado do servidor. (Talvez uma pequena barra de informações seria legal, mas não é necessária para mim).

Caso de uso: imagine que eu entrei em um site que uso regularmente e, depois de pressionar Enter, vejo no canto do meu olho uma manchete de notícias na página de login. Gostaria de clicar novamente e ver a página exata que vi há um segundo para clicar no título. Se eu visualizar a primeira página conectada ou apenas recarregá-la, posso obter títulos diferentes (aleatórios).

Então, como me livrar completamente das mensagens "Documento expirado" e "Confirmar" e fazer com que o Firefox simplesmente exiba o último local em cache depois de enviar um formulário POST? about:configconfigurações, extensões, truques de proxy estão bem.


3
Você está perguntando como exibir a entrada de cache de um documento não armazenado em cache. Não é possível.
paa

3
Bem, então, por extensão, estou perguntando como fazer o Firefox também armazenar em cache o documento :-).
JDM

1
Eu encontro muito isso quando tudo o que estou tentando fazer é fazer backup através do histórico de navegação para chegar a algum lugar antes que o problema ocorra. Ter algo para superar esse obstáculo seria muito útil. Sei que posso usar o botão Histórico na barra de ferramentas principal, mas geralmente é difícil descobrir qual entrada escolher.
31413 Joe

@ jdm você está perguntando 1) como exibir a página em que naveguei da mesma maneira que a vi antes; 2) e como se livrar da caixa de confirmação do navegador para reenviar os dados. Eu entendi isso claramente?
Laika

@sjrco: 1) sim, mas não 2). Gostaria de poder clicar novamente e ver o que estava lá (mesmo estado da página) antes de navegar. (Isso funciona em algumas páginas, mesmo que tenham sido modificadas por js, ou o usuário preencheu os formulários; portanto, o navegador deve salvar o documento modificado em algumas circunstâncias). Não quero que o navegador reenvie dados silenciosamente. Eu quero suprimir diálogos modais quando não reenviar dados, no entanto.
jdm

Respostas:


2

O mecanismo do Firefox não (ou não deve) armazenar em cache o último estado dos documentos, apenas o próprio documento HTML se o servidor permitir o armazenamento em cache. O Opera tinha (ou talvez ainda tenha) esse recurso, mas causou muitas dores de cabeça de segurança para os operadores de sites.

A RFC 2616 afirma:

13.4 Cache de resposta

A menos que especificamente restrito por uma diretiva de controle de cache (seção 14.9), um sistema de armazenamento em cache PODE sempre armazenar uma resposta bem-sucedida (consulte a seção 13.8) como uma entrada em cache, PODE retorná-la sem validação se for nova e PODE retorná-la após validação bem-sucedida .

Atualmente, muitos sites empregam o cabeçalho de controle de cache em todas as respostas geradas pelo servidor para evitar problemas de cache. Mesmo se você conseguir que o Firefox forneça o documento no estado anterior, na maioria dos sites, se não funcionaria ou não deveria funcionar. A solução mais segura e à prova de futuro seria pedir ao proprietário do site para codificá-lo adequadamente.


1
Mas ele armazena em cache o último estado, pelo menos em algumas circunstâncias. Tente isto: gist.github.com/jdmansour/5578079 . Pelo menos o DOM é preservado.
jdm

1
História e cache não são a mesma coisa. Veja a seção 13.13 da mesma RFC . O botão Voltar solicita uma exibição novamente de uma entrada do histórico, não de cache. Opera está certa; O Firefox está errado. Quem afirma que esse é um recurso de "segurança" está sendo estúpido. Você sempre pode usar "abrir em nova guia" e fechar a nova guia para ver a página anterior sem que o servidor saiba que você o fez. Um botão voltar funcionando corretamente deve ter exatamente esse efeito.

2

Para se livrar de todas essas mensagens, adicione as seguintes linhas PHP no início de todos os seus scripts:

cabeçalho ("Expira: Sáb, 01 de janeiro de 2000 00:00:00 GMT"); cabeçalho ("Última modificação:" .gmdate ("D, d MYH: i: s"). "GMT"); cabeçalho ("Controle de cache: pós-verificação = 0, pré-verificação = 0", falso); session_cache_limiter ("deve revalidar");


2
Não sei se o @jdm tem controle sobre as páginas sobre as quais eles estão falando.
Valmiky Arquissandas

2

A resposta está em https://support.mozilla.org/fr/questions/1010942 : basta verificar Ferramentas-> Opções-> Substituir o gerenciamento automático de cache.


É isso! A configuração está em Ferramentas / Opções / Avançado / Rede / Substituir gerenciamento automático de cache. Não tenho certeza se funciona para todos os casos de "Documento expirado", mas funcionou para o que eu tinha, onde não conseguia visualizar a fonte de uma resposta do POST.
RomanSt

Isso não deve ter efeito sobre esse problema, pois permite apenas definir o tamanho do cache: support.mozilla.org/en-US/questions/1037647 Gostaria de saber qual era o tamanho do cache determinado automaticamente, se isso ajuda. .
Nickolay
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.