Iframe keep-alive função - o que é necessário para repor o tempo limite da sessão?

StackOverflow https://stackoverflow.com/questions/1270910

  •  13-09-2019
  •  | 
  •  

Pergunta

Eu tenho um iframe oculto que é atualizado a cada vez em quando, a fim de manter a sessão ASP.NET instalado e funcionando, durante o tempo que o usuário está online.

No entanto, eu fui ficando relatos de usuários que experimentam tempo limite de sessão, então agora eu estou em dúvida sobre o que é necessário para repor o temporizador da sessão.

página de conteúdo do iframe oculto (página HTML simples) refresca-se em um determinado intervalo de tempo, o que é significativamente menor do que o tempo limite da sessão.

A minha pergunta é: É o suficiente (para o temporizador sessão para reiniciar) para deixar a página de refrescar-se, mesmo quando as responde servidor com um HTTP / 1.x 304 não modificado?

É simplesmente o pedido GET-se que informa o servidor para repor o temporizador da sessão?

Ou eu preciso ter certeza de que realmente buscar a página e receber uma resposta HTTP / 1.x 200 OK?

Foi útil?

Solução

Tudo que você tem que fazer para manter a sessão viva é enviar um pedido para uma página da sessão atual. Você pode fazer isso via iframe, ou via ajax.

Se você simplesmente atualizar a página no iframe, a resposta pode ser um cache um - assim a 304. Você tem que enviar um novo pedido de cada vez -

var url = "http://domain.com/defibrillator.aspx?" + (new Date()).getTime();

por exemplo.

http://domain.com/defibrillator.aspx?1556467987987
http://domain.com/defibrillator.aspx?5448796497878
http://domain.com/defibrillator.aspx?4123165487987
....

EDIT 1

Ou você pode usar o atributo Atualizar cabeçalho HTTP .


EDIT 1.1

Se você estiver usando o codeproject artigo mencionado acima, em seguida, tentar modelá-lo usando AJAX em vez de iframe -. Que iria poupar alguns bytes de marcação iframe adicional


EDIT 2 - Sobre HTTP 304 Not Modified

a Se o cliente tiver realizado pedido GET condicional eo acesso é permitido, mas o documento não foi modificado, o servidor deverá responder com este código de status. a 304 resposta não deve conter um mensagem-corpo, e, portanto, é sempre terminada pela primeira linha vazia após os campos de cabeçalho.

Isto significa que o pedido não atingiu o gasoduto ASP.NET, e directamente foi servido por si só IIS. ambiente ASP.NET não sabe que a solicitação foi feita. Assim, não irá realizar a renovação sessão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top