Domanda

È possibile fornire una risposta HTTP di questo tipo, che il browser la ignora e continua a mostrare la pagina precedentemente visualizzata?

Intendo il seguente scenario:

a) l'utente fa clic su qualcosa

b) alcuni POST vanno al server (o GET, ma rimaniamo con POST più interessante)

c) il server decide che per qualche motivo non desidera inviare la risposta in questo momento

d) il server invia una risposta appositamente predisposta

e) il browser non mostra la pagina di errore, non mostra la pagina vuota, non reindirizza da nessuna parte, non si ricarica - continua a mostrare ciò che stava mostrando come se l'utente non avesse mai inviato il modulo

PS Naturalmente può essere avvolto con AJAX, ma chiedo se è possibile una soluzione non javascript senza ossa

È stato utile?

Soluzione

Prova a restituire HTTP 204 Nessun contenuto. Vedi la descrizione di questo codice di risposta in RFC 2616 (Hypertext Transfer Protocol - - HTTP / 1.1) dove dice:

  

Se il client è un agente utente, NON DOVREBBE cambiare la sua vista del documento da quella   che ha causato l'invio della richiesta. Questa risposta ha principalmente lo scopo di consentire   input per le azioni da eseguire senza causare una modifica all'agente utente attivo   visualizzazione del documento, sebbene qualsiasi metainformazione nuova o aggiornata DOVREBBE essere applicata al   documento attualmente nella vista attiva dell'agente utente.

Altri suggerimenti

Questo è un metodo generalmente chiamato AJAX . Richiede Javascript e XMLHttpRequest .

Modifica: notato il tuo "PS" in fondo. La 204 risposta suggerita in un'altra risposta sembra che potrebbe essere valida soluzione non Javascript.

Supponi di farlo.

Cosa fa l'utente? Invia di nuovo il modulo, ovviamente.

Più volte.

Quindi decidono che il tuo sito è rotto e se ne vanno.

Penso che tu abbia bisogno di Javascript per farlo, puoi inviare la richiesta e, a seconda della risposta del server, Javascript può fare un ritorno falso, evitando l'aggiornamento / il ricaricamento della pagina attuale.

Non conosco la risposta 204, ma forse in questo modo puoi farlo dal lato server.

Un altro modo di farlo (anche Javascript) è di rendere un ritorno falso, subito dopo l'invio della richiesta, e in base alla risposta del server (con ajax) è possibile modificare la pagina effettiva o inviare l'utente a un'altra pagina.

No. Il protocollo HTTP è costituito da un ciclo richiesta-risposta. Il server non può decidere di NON rispondere (può, ma poi sta rompendo il protocollo e commettendo un errore).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top