Podcast
Questions and Answers
Qual era una delle principali limitazioni dell'HTTP 1.0 nella gestione di contenuti dinamici?
Qual era una delle principali limitazioni dell'HTTP 1.0 nella gestione di contenuti dinamici?
HTTP 1.0 richiedeva che la lunghezza del contenuto fosse dichiarata in anticipo, complicando la trasmissione dei dati per le pagine dinamiche.
Che problemi poteva causare il troncamento della connessione in HTTP 1.0?
Che problemi poteva causare il troncamento della connessione in HTTP 1.0?
Il troncamento della connessione poteva portare a una trasmissione incompleta dei dati, poiché il browser poteva interpretare l'interruzione come un errore.
Qual è l'impatto delle connessioni TCP separate in HTTP 1.0?
Qual è l'impatto delle connessioni TCP separate in HTTP 1.0?
Richiedere l'apertura di una connessione TCP separata per ogni oggetto aumenta l'overhead e rallenta il caricamento della pagina.
Come veniva gestita la cache in HTTP 1.0?
Come veniva gestita la cache in HTTP 1.0?
Signup and view all the answers
Quale innovazione ha introdotto HTTP 1.1 rispetto alle connessioni?
Quale innovazione ha introdotto HTTP 1.1 rispetto alle connessioni?
Signup and view all the answers
Che vantaggio offre il pipelining in HTTP 1.1?
Che vantaggio offre il pipelining in HTTP 1.1?
Signup and view all the answers
Perché l'HTTP 1.0 era considerato insufficiente per il web in espansione?
Perché l'HTTP 1.0 era considerato insufficiente per il web in espansione?
Signup and view all the answers
Qual è l'effetto delle dimensioni ridotte delle risorse su HTTP 1.0?
Qual è l'effetto delle dimensioni ridotte delle risorse su HTTP 1.0?
Signup and view all the answers
In che modo HTTP 1.1 migliora la gestione delle pagine dinamiche rispetto a HTTP 1.0?
In che modo HTTP 1.1 migliora la gestione delle pagine dinamiche rispetto a HTTP 1.0?
Signup and view all the answers
Quali meccanismi sono stati introdotti da HTTP 1.1 per la gestione della cache?
Quali meccanismi sono stati introdotti da HTTP 1.1 per la gestione della cache?
Signup and view all the answers
Come risolve HTTP 1.1 il problema del Content-Length nelle pagine dinamiche?
Come risolve HTTP 1.1 il problema del Content-Length nelle pagine dinamiche?
Signup and view all the answers
Qual è il ruolo dell'header Host in HTTP 1.1?
Qual è il ruolo dell'header Host in HTTP 1.1?
Signup and view all the answers
Specifica i nuovi metodi HTTP introdotti con HTTP 1.1.
Specifica i nuovi metodi HTTP introdotti con HTTP 1.1.
Signup and view all the answers
In che modo HTTP 1.1 migliora la sicurezza rispetto a HTTP 1.0?
In che modo HTTP 1.1 migliora la sicurezza rispetto a HTTP 1.0?
Signup and view all the answers
Quali sono i vantaggi della negoziazione dei formati di compressione e lingua in HTTP 1.1?
Quali sono i vantaggi della negoziazione dei formati di compressione e lingua in HTTP 1.1?
Signup and view all the answers
In che modo i proxy influenzano la gestione della cache in HTTP 1.1?
In che modo i proxy influenzano la gestione della cache in HTTP 1.1?
Signup and view all the answers
Cosa implica la frammentazione in HTTP 1.1?
Cosa implica la frammentazione in HTTP 1.1?
Signup and view all the answers
Qual è lo scopo del metodo DELETE in HTTP 1.1?
Qual è lo scopo del metodo DELETE in HTTP 1.1?
Signup and view all the answers
Perché la gestione della cache è considerata più raffinata in HTTP 1.1 rispetto a HTTP 1.0?
Perché la gestione della cache è considerata più raffinata in HTTP 1.1 rispetto a HTTP 1.0?
Signup and view all the answers
Come si configurano i virtual host in un server HTTP?
Come si configurano i virtual host in un server HTTP?
Signup and view all the answers
Qual è il ruolo del DNS nella configurazione dei virtual host?
Qual è il ruolo del DNS nella configurazione dei virtual host?
Signup and view all the answers
Cosa fa l'header 'Host' in una richiesta HTTP?
Cosa fa l'header 'Host' in una richiesta HTTP?
Signup and view all the answers
Qual è la differenza principale tra una connessione HTTP persistente e non persistente?
Qual è la differenza principale tra una connessione HTTP persistente e non persistente?
Signup and view all the answers
Cosa indica l'header 'Connection: close' in una richiesta HTTP?
Cosa indica l'header 'Connection: close' in una richiesta HTTP?
Signup and view all the answers
Come vengono gestite le directory dei documenti per più siti in un server?
Come vengono gestite le directory dei documenti per più siti in un server?
Signup and view all the answers
Qual è l'importanza dei record CNAME nella configurazione DNS?
Qual è l'importanza dei record CNAME nella configurazione DNS?
Signup and view all the answers
In che modo il meccanismo di virtual hosting supporta i siti web sullo stesso server?
In che modo il meccanismo di virtual hosting supporta i siti web sullo stesso server?
Signup and view all the answers
Perché HTTP 1.1 consente connessioni persistenti mentre HTTP 1.0 no?
Perché HTTP 1.1 consente connessioni persistenti mentre HTTP 1.0 no?
Signup and view all the answers
Qual è il risultato dell'assenza di 'Connection: close' in una richiesta HTTP?
Qual è il risultato dell'assenza di 'Connection: close' in una richiesta HTTP?
Signup and view all the answers
Quali sono i principali vantaggi delle connessioni persistenti in HTTP 1.1 rispetto a HTTP 1.0?
Quali sono i principali vantaggi delle connessioni persistenti in HTTP 1.1 rispetto a HTTP 1.0?
Signup and view all the answers
Qual è il rischio principale associato alle connessioni persistenti in HTTP 1.1?
Qual è il rischio principale associato alle connessioni persistenti in HTTP 1.1?
Signup and view all the answers
Come il pipelining delle richieste influisce sui tempi di latenza in HTTP 1.1?
Come il pipelining delle richieste influisce sui tempi di latenza in HTTP 1.1?
Signup and view all the answers
In che modo la compressione dei dati contribuisce all'efficienza della trasmissione in HTTP 1.1?
In che modo la compressione dei dati contribuisce all'efficienza della trasmissione in HTTP 1.1?
Signup and view all the answers
Qual è il significato del comando 'GET' in una richiesta HTTP?
Qual è il significato del comando 'GET' in una richiesta HTTP?
Signup and view all the answers
Come può un client in HTTP 1.1 gestire un errore di 'versione non supportata' quando comunica con un server?
Come può un client in HTTP 1.1 gestire un errore di 'versione non supportata' quando comunica con un server?
Signup and view all the answers
Quali sono le conseguenze di non chiudere le connessioni in un attacco DoS?
Quali sono le conseguenze di non chiudere le connessioni in un attacco DoS?
Signup and view all the answers
Perché HTTP 1.1 mantiene la compatibilità con HTTP 1.0?
Perché HTTP 1.1 mantiene la compatibilità con HTTP 1.0?
Signup and view all the answers
Qual è la differenza chiave tra le richieste inviate in HTTP 1.0 e in HTTP 1.1 riguardo alla connessione TCP?
Qual è la differenza chiave tra le richieste inviate in HTTP 1.0 e in HTTP 1.1 riguardo alla connessione TCP?
Signup and view all the answers
Qual è il ruolo della favicon nel caricamento di una pagina web in HTTP?
Qual è il ruolo della favicon nel caricamento di una pagina web in HTTP?
Signup and view all the answers
Qual è la principale differenza tra la compressione a livello di dato e a livello di trasmissione?
Qual è la principale differenza tra la compressione a livello di dato e a livello di trasmissione?
Signup and view all the answers
Quali codifiche possono essere specificate nell'header 'Accept-Encoding' di una richiesta HTTP?
Quali codifiche possono essere specificate nell'header 'Accept-Encoding' di una richiesta HTTP?
Signup and view all the answers
Cosa indica l'header 'Content-Encoding' in una risposta HTTP?
Cosa indica l'header 'Content-Encoding' in una risposta HTTP?
Signup and view all the answers
Come funziona la codifica chunked nella trasmissione dei dati?
Come funziona la codifica chunked nella trasmissione dei dati?
Signup and view all the answers
Qual è il significato del primo chunk nel processo di codifica chunked?
Qual è il significato del primo chunk nel processo di codifica chunked?
Signup and view all the answers
Quali sono alcuni algoritmi di compressione standard utilizzati in HTTP?
Quali sono alcuni algoritmi di compressione standard utilizzati in HTTP?
Signup and view all the answers
Come termina la trasmissione dei chunk nella codifica chunked?
Come termina la trasmissione dei chunk nella codifica chunked?
Signup and view all the answers
Cosa rappresenta il valore 'identity' nell'header di codifica?
Cosa rappresenta il valore 'identity' nell'header di codifica?
Signup and view all the answers
In che modo la compressione dei dati migliora l'efficienza della trasmissione in HTTP?
In che modo la compressione dei dati migliora l'efficienza della trasmissione in HTTP?
Signup and view all the answers
Quale ruolo svolge l'header 'Content-Type' nella risposta HTTP?
Quale ruolo svolge l'header 'Content-Type' nella risposta HTTP?
Signup and view all the answers
Qual è l'effetto della compressione sui tempi di caricamento in HTTP 1.1?
Qual è l'effetto della compressione sui tempi di caricamento in HTTP 1.1?
Signup and view all the answers
In che modo il metodo PUT differisce dal metodo POST nella gestione delle risorse?
In che modo il metodo PUT differisce dal metodo POST nella gestione delle risorse?
Signup and view all the answers
Qual è il risultato dell'utilizzo di HTTP 1.1 con connessione persistente rispetto a HTTP 1.0?
Qual è il risultato dell'utilizzo di HTTP 1.1 con connessione persistente rispetto a HTTP 1.0?
Signup and view all the answers
Qual è la differenza principale tra le risposte di PUT e POST?
Qual è la differenza principale tra le risposte di PUT e POST?
Signup and view all the answers
Come influisce il pipelining in HTTP 1.1 sulle prestazioni rispetto a HTTP 1.0?
Come influisce il pipelining in HTTP 1.1 sulle prestazioni rispetto a HTTP 1.0?
Signup and view all the answers
Che ruolo gioca l'header 'Host' in una richiesta HTTP?
Che ruolo gioca l'header 'Host' in una richiesta HTTP?
Signup and view all the answers
Cosa implica la connessione persistente in HTTP 1.1 rispetto alla sua gestione in HTTP 1.0?
Cosa implica la connessione persistente in HTTP 1.1 rispetto alla sua gestione in HTTP 1.0?
Signup and view all the answers
Qual è l'importanza della valutazione delle prestazioni del protocollo HTTP?
Qual è l'importanza della valutazione delle prestazioni del protocollo HTTP?
Signup and view all the answers
In che modo il metodo POST è comunemente utilizzato nei form HTML?
In che modo il metodo POST è comunemente utilizzato nei form HTML?
Signup and view all the answers
Qual è un vantaggio dell'uso di connessioni simultanee in HTTP 1.0?
Qual è un vantaggio dell'uso di connessioni simultanee in HTTP 1.0?
Signup and view all the answers
Quali sono i tre possibili esiti di una richiesta PUT?
Quali sono i tre possibili esiti di una richiesta PUT?
Signup and view all the answers
In quale scenario è utilizzato il codice 100 CONTINUE?
In quale scenario è utilizzato il codice 100 CONTINUE?
Signup and view all the answers
Cosa indica una risposta 200 OK in un metodo DELETE?
Cosa indica una risposta 200 OK in un metodo DELETE?
Signup and view all the answers
Qual è la principale funzione del metodo TRACE?
Qual è la principale funzione del metodo TRACE?
Signup and view all the answers
Qual è lo scopo del metodo OPTIONS?
Qual è lo scopo del metodo OPTIONS?
Signup and view all the answers
Come può un client utilizzare l'header Max-Forwards?
Come può un client utilizzare l'header Max-Forwards?
Signup and view all the answers
Cosa comporta una risposta del server a una richiesta TRACE?
Cosa comporta una risposta del server a una richiesta TRACE?
Signup and view all the answers
Qual è l'importanza dell'header Expect in una richiesta di grande dimensione?
Qual è l'importanza dell'header Expect in una richiesta di grande dimensione?
Signup and view all the answers
Qual è la differenza tra i risultati di una richiesta PUT per una risorsa esistente e una non esistente?
Qual è la differenza tra i risultati di una richiesta PUT per una risorsa esistente e una non esistente?
Signup and view all the answers
Come viene utilizzato il metodo DELETE in HTTP 1.1?
Come viene utilizzato il metodo DELETE in HTTP 1.1?
Signup and view all the answers
Qual è la funzione principale dell'header If-None-Match nell'ambito dell'ETag?
Qual è la funzione principale dell'header If-None-Match nell'ambito dell'ETag?
Signup and view all the answers
Come il client può ottimizzare il caricamento di dati già acquisiti utilizzando l'header Range?
Come il client può ottimizzare il caricamento di dati già acquisiti utilizzando l'header Range?
Signup and view all the answers
In che modo l'ETag supporta le richieste condizionali nel processo di gestione della cache?
In che modo l'ETag supporta le richieste condizionali nel processo di gestione della cache?
Signup and view all the answers
Qual è il risultato di una richiesta GET con l'header If-None-Match e un ETag corrispondente?
Qual è il risultato di una richiesta GET con l'header If-None-Match e un ETag corrispondente?
Signup and view all the answers
Quale codice di stato HTTP viene utilizzato per indicare che il server ha fornito solo una parte del contenuto richiesto?
Quale codice di stato HTTP viene utilizzato per indicare che il server ha fornito solo una parte del contenuto richiesto?
Signup and view all the answers
Perché l'uso di ETag è considerato vantaggioso per il risparmio di risorse di rete?
Perché l'uso di ETag è considerato vantaggioso per il risparmio di risorse di rete?
Signup and view all the answers
Che ruolo gioca l'header If-Match nella comunicazione tra client e server?
Che ruolo gioca l'header If-Match nella comunicazione tra client e server?
Signup and view all the answers
In quale scenario l'header If-None-Match è più comunemente utilizzato?
In quale scenario l'header If-None-Match è più comunemente utilizzato?
Signup and view all the answers
Descrivi il significato di 'Content-Range' nella risposta HTTP.
Descrivi il significato di 'Content-Range' nella risposta HTTP.
Signup and view all the answers
Qual è la principale funzione della codifica chunked in HTTP 1.1?
Qual è la principale funzione della codifica chunked in HTTP 1.1?
Signup and view all the answers
Cosa indica l'header 'Accept-Range' e quali valori può assumere?
Cosa indica l'header 'Accept-Range' e quali valori può assumere?
Signup and view all the answers
Come funziona un ETag e qual è la sua utilità?
Come funziona un ETag e qual è la sua utilità?
Signup and view all the answers
Qual è la sintassi generale per specificare un Content-Range in una risposta HTTP?
Qual è la sintassi generale per specificare un Content-Range in una risposta HTTP?
Signup and view all the answers
Qual è la differenza tra Strong ETag e Weak ETag?
Qual è la differenza tra Strong ETag e Weak ETag?
Signup and view all the answers
Cosa accade quando l'ETag fornito dal client corrisponde a quello del server in una richiesta condizionale?
Cosa accade quando l'ETag fornito dal client corrisponde a quello del server in una richiesta condizionale?
Signup and view all the answers
In che modo HTTP 1.1 consente di richiedere più intervalli di dati?
In che modo HTTP 1.1 consente di richiedere più intervalli di dati?
Signup and view all the answers
Per cosa viene utilizzato l'header 'If-None-Match' in HTTP?
Per cosa viene utilizzato l'header 'If-None-Match' in HTTP?
Signup and view all the answers
Qual è la risposta del server quando non supporta la trasmissione parziale?
Qual è la risposta del server quando non supporta la trasmissione parziale?
Signup and view all the answers
Che vantaggio porta la trasmissione parziale rispetto alla trasmissione completa di dati?
Che vantaggio porta la trasmissione parziale rispetto alla trasmissione completa di dati?
Signup and view all the answers
Qual è la funzione del flag Secure nei cookie?
Qual è la funzione del flag Secure nei cookie?
Signup and view all the answers
Come il parametro SameSite contribuisce alla sicurezza dei cookie?
Come il parametro SameSite contribuisce alla sicurezza dei cookie?
Signup and view all the answers
Perché è consigliabile non inserire dati sensibili nei cookie?
Perché è consigliabile non inserire dati sensibili nei cookie?
Signup and view all the answers
Qual è la differenza tra cookie essenziali e cookie opzionali?
Qual è la differenza tra cookie essenziali e cookie opzionali?
Signup and view all the answers
Cosa garantisce il parametro HttpOnly nei cookie?
Cosa garantisce il parametro HttpOnly nei cookie?
Signup and view all the answers
Come funziona il cookie con impostazioni Secure, HttpOnly e SameSite=Strict?
Come funziona il cookie con impostazioni Secure, HttpOnly e SameSite=Strict?
Signup and view all the answers
Qual è il ruolo del banner di consenso ai cookie per gli utenti?
Qual è il ruolo del banner di consenso ai cookie per gli utenti?
Signup and view all the answers
Come i cookie possono influenzare la gestione delle sessioni?
Come i cookie possono influenzare la gestione delle sessioni?
Signup and view all the answers
Cosa si intende per attacchi CSRF e come li mitiga SameSite?
Cosa si intende per attacchi CSRF e come li mitiga SameSite?
Signup and view all the answers
Qual è il significato della parola 'Strict' nel contesto di SameSite?
Qual è il significato della parola 'Strict' nel contesto di SameSite?
Signup and view all the answers
Quali informazioni possono essere tracciate dai cookie durante la navigazione dell'utente?
Quali informazioni possono essere tracciate dai cookie durante la navigazione dell'utente?
Signup and view all the answers
Qual è uno dei principali rischi associati all'impostazione di un dominio troppo ampio nei cookie?
Qual è uno dei principali rischi associati all'impostazione di un dominio troppo ampio nei cookie?
Signup and view all the answers
In che modo il packet sniffing può influenzare la sicurezza dei cookie?
In che modo il packet sniffing può influenzare la sicurezza dei cookie?
Signup and view all the answers
Cosa può fare un attaccante in un attacco di web spoofing riguardo ai cookie?
Cosa può fare un attaccante in un attacco di web spoofing riguardo ai cookie?
Signup and view all the answers
Qual è il problema di sicurezza che può verificarsi con i cookie in contesti di subdomain?
Qual è il problema di sicurezza che può verificarsi con i cookie in contesti di subdomain?
Signup and view all the answers
In che modo malware e script malevoli possono influenzare i cookie dell'utente?
In che modo malware e script malevoli possono influenzare i cookie dell'utente?
Signup and view all the answers
Che ruolo gioca l'opzione HTTPOnly nella sicurezza dei cookie?
Che ruolo gioca l'opzione HTTPOnly nella sicurezza dei cookie?
Signup and view all the answers
Qual è il principale vantaggio di trasmettere cookie attraverso connessioni HTTPS?
Qual è il principale vantaggio di trasmettere cookie attraverso connessioni HTTPS?
Signup and view all the answers
Qual è il rischio connesso al tracciamento delle interazioni degli utenti tramite cookie?
Qual è il rischio connesso al tracciamento delle interazioni degli utenti tramite cookie?
Signup and view all the answers
Come può un attaccante sfruttare un server configurato in modo malevolo per accedere ai cookie?
Come può un attaccante sfruttare un server configurato in modo malevolo per accedere ai cookie?
Signup and view all the answers
Qual è la conseguenza di un mismatch nel path di un cookie durante una richiesta?
Qual è la conseguenza di un mismatch nel path di un cookie durante una richiesta?
Signup and view all the answers
Come deve essere configurato il campo domain di un cookie per garantirne la validità?
Come deve essere configurato il campo domain di un cookie per garantirne la validità?
Signup and view all the answers
Qual è la funzione del campo Host quando si configurano i cookie?
Qual è la funzione del campo Host quando si configurano i cookie?
Signup and view all the answers
Cosa rappresenta la sintassi Set-Cookie2 nell'HTTP/1.1?
Cosa rappresenta la sintassi Set-Cookie2 nell'HTTP/1.1?
Signup and view all the answers
Qual è l'importanza di aggiungere commenti durante la configurazione dei cookie?
Qual è l'importanza di aggiungere commenti durante la configurazione dei cookie?
Signup and view all the answers
Che effetto ha l'attributo Max-Age in una configurazione cookie?
Che effetto ha l'attributo Max-Age in una configurazione cookie?
Signup and view all the answers
Cosa implica la configurazione di un cookie come volatile tramite l'attributo Discard?
Cosa implica la configurazione di un cookie come volatile tramite l'attributo Discard?
Signup and view all the answers
Perché è significativo l'uso del punto iniziale nel campo domain di un cookie?
Perché è significativo l'uso del punto iniziale nel campo domain di un cookie?
Signup and view all the answers
Come influiscono i cookie configurati con un dominio generico sulla sicurezza?
Come influiscono i cookie configurati con un dominio generico sulla sicurezza?
Signup and view all the answers
Qual è il significato dell'attributo 'Discard' nel contesto della configurazione dei cookie?
Qual è il significato dell'attributo 'Discard' nel contesto della configurazione dei cookie?
Signup and view all the answers
In che modo l'attributo 'Secure' migliora la sicurezza dei cookie?
In che modo l'attributo 'Secure' migliora la sicurezza dei cookie?
Signup and view all the answers
Che ruolo gioca l'attributo 'HttpOnly' nella protezione dei cookie?
Che ruolo gioca l'attributo 'HttpOnly' nella protezione dei cookie?
Signup and view all the answers
Qual è la funzione del campo 'Version' nella configurazione dei cookie?
Qual è la funzione del campo 'Version' nella configurazione dei cookie?
Signup and view all the answers
Come possono i cookie validi essere sfruttati in un 'Subdomain Attack'?
Come possono i cookie validi essere sfruttati in un 'Subdomain Attack'?
Signup and view all the answers
Cosa implica l'uso di 'Set-Cookie2' rispetto a 'Set-Cookie'?
Cosa implica l'uso di 'Set-Cookie2' rispetto a 'Set-Cookie'?
Signup and view all the answers
Qual è l'importanza del parametro 'Max-Age' in un cookie?
Qual è l'importanza del parametro 'Max-Age' in un cookie?
Signup and view all the answers
Come l'attributo 'Comment' possa essere utilizzato nella configurazione dei cookie?
Come l'attributo 'Comment' possa essere utilizzato nella configurazione dei cookie?
Signup and view all the answers
Quali sono i principali attacchi informatici affrontati dall'uso dell'attributo 'HttpOnly'?
Quali sono i principali attacchi informatici affrontati dall'uso dell'attributo 'HttpOnly'?
Signup and view all the answers
Qual è la funzione principale delle sessioni in PHP rispetto all'HTTP?
Qual è la funzione principale delle sessioni in PHP rispetto all'HTTP?
Signup and view all the answers
Cosa rappresenta l'identificatore di sessione PHPSESSID?
Cosa rappresenta l'identificatore di sessione PHPSESSID?
Signup and view all the answers
Quali stati può restituire la funzione session_status() in PHP?
Quali stati può restituire la funzione session_status() in PHP?
Signup and view all the answers
Qual è il risultato dell'utilizzo della funzione unset()
sulle variabili di sessione in PHP?
Qual è il risultato dell'utilizzo della funzione unset()
sulle variabili di sessione in PHP?
Signup and view all the answers
Qual è la conseguenza di richiamare session_start() dopo aver inviato output HTML?
Qual è la conseguenza di richiamare session_start() dopo aver inviato output HTML?
Signup and view all the answers
Quali rischi comporta passare l'ID di sessione tramite URL?
Quali rischi comporta passare l'ID di sessione tramite URL?
Signup and view all the answers
Cosa fa la funzione session_write_close()
in PHP?
Cosa fa la funzione session_write_close()
in PHP?
Signup and view all the answers
Come vengono gestite le variabili di sessione in PHP?
Come vengono gestite le variabili di sessione in PHP?
Signup and view all the answers
Qual è la differenza tra session_destroy()
e session_unset()
?
Qual è la differenza tra session_destroy()
e session_unset()
?
Signup and view all the answers
Qual è il senso della memorizzazione delle informazioni di stato nelle sessioni?
Qual è il senso della memorizzazione delle informazioni di stato nelle sessioni?
Signup and view all the answers
Perché è importante impostare session.cookie_secure
su 1?
Perché è importante impostare session.cookie_secure
su 1?
Signup and view all the answers
Qual è l'effetto della modifica del parametro session.gc_maxlifetime
?
Qual è l'effetto della modifica del parametro session.gc_maxlifetime
?
Signup and view all the answers
Cosa succede se le sessioni sono disabilitate in PHP?
Cosa succede se le sessioni sono disabilitate in PHP?
Signup and view all the answers
Perché è importante la sicurezza nelle sessioni rispetto ai cookie?
Perché è importante la sicurezza nelle sessioni rispetto ai cookie?
Signup and view all the answers
Cosa permette di fare la funzione session_name()
?
Cosa permette di fare la funzione session_name()
?
Signup and view all the answers
Qual è lo scopo di ini_set('session.cookie_httponly', 1)
?
Qual è lo scopo di ini_set('session.cookie_httponly', 1)
?
Signup and view all the answers
Qual è il metodo per inizializzare una nuova sessione in PHP?
Qual è il metodo per inizializzare una nuova sessione in PHP?
Signup and view all the answers
Quale metodo PHP viene utilizzato per chiudere una sessione senza distruggerla?
Quale metodo PHP viene utilizzato per chiudere una sessione senza distruggerla?
Signup and view all the answers
Cosa succede se non si distrugge una sessione quando non è più necessaria?
Cosa succede se non si distrugge una sessione quando non è più necessaria?
Signup and view all the answers
Qual è il significato di 'HttpOnly' nel contesto delle sessioni PHP?
Qual è il significato di 'HttpOnly' nel contesto delle sessioni PHP?
Signup and view all the answers
Qual è la funzione di session_write_close()
in PHP?
Qual è la funzione di session_write_close()
in PHP?
Signup and view all the answers
Come si verifica se una sessione in PHP è attiva?
Come si verifica se una sessione in PHP è attiva?
Signup and view all the answers
Qual è il passaggio necessario per cancellare completamente una sessione?
Qual è il passaggio necessario per cancellare completamente una sessione?
Signup and view all the answers
Cosa fa setcookie(session_name(), '', time() - 42000, '/');
?
Cosa fa setcookie(session_name(), '', time() - 42000, '/');
?
Signup and view all the answers
Come si gestisce il conteggio delle pagine visitate in una sessione?
Come si gestisce il conteggio delle pagine visitate in una sessione?
Signup and view all the answers
Qual è il ruolo della funzione session_id()
in PHP?
Qual è il ruolo della funzione session_id()
in PHP?
Signup and view all the answers
Perché è utile session_write_close()
in un ambiente con accesso concorrente?
Perché è utile session_write_close()
in un ambiente con accesso concorrente?
Signup and view all the answers
Qual è la conseguenza di non utilizzare session_destroy()
prima di una nuova sessione?
Qual è la conseguenza di non utilizzare session_destroy()
prima di una nuova sessione?
Signup and view all the answers
Quale verifica deve essere fatta prima di iniziare una sessione in PHP?
Quale verifica deve essere fatta prima di iniziare una sessione in PHP?
Signup and view all the answers
Come si può prevenire conflitti di accesso ai dati di sessione?
Come si può prevenire conflitti di accesso ai dati di sessione?
Signup and view all the answers
Qual è la funzione di session_regenerate_id(true)
in PHP?
Qual è la funzione di session_regenerate_id(true)
in PHP?
Signup and view all the answers
Quale valore viene assegnato a $_SESSION['expire_time']
per impostare un timeout di 30 minuti?
Quale valore viene assegnato a $_SESSION['expire_time']
per impostare un timeout di 30 minuti?
Signup and view all the answers
Cosa fa il codice session_unset();
in un contesto di gestione delle sessioni?
Cosa fa il codice session_unset();
in un contesto di gestione delle sessioni?
Signup and view all the answers
Qual è lo scopo di session_get_cookie_params()
durante la cancellazione della sessione?
Qual è lo scopo di session_get_cookie_params()
durante la cancellazione della sessione?
Signup and view all the answers
In che modo viene distrutta la sessione sul server in PHP?
In che modo viene distrutta la sessione sul server in PHP?
Signup and view all the answers
Cosa indica il secondo parametro della funzione setcookie()
quando si elimina un cookie di sessione?
Cosa indica il secondo parametro della funzione setcookie()
quando si elimina un cookie di sessione?
Signup and view all the answers
Qual è il significato di session_start();
in uno script PHP?
Qual è il significato di session_start();
in uno script PHP?
Signup and view all the answers
Qual è la conseguenza di non gestire un timeout per le sessioni in un'applicazione web?
Qual è la conseguenza di non gestire un timeout per le sessioni in un'applicazione web?
Signup and view all the answers
Quale effetto ha $_SESSION = [];
nella gestione delle sessioni?
Quale effetto ha $_SESSION = [];
nella gestione delle sessioni?
Signup and view all the answers
Qual è la funzione principale dell'header 'Authorization' in una richiesta HTTP?
Qual è la funzione principale dell'header 'Authorization' in una richiesta HTTP?
Signup and view all the answers
Cosa indica l'header 'Expect: 100-continue' in una richiesta HTTP?
Cosa indica l'header 'Expect: 100-continue' in una richiesta HTTP?
Signup and view all the answers
Qual è lo scopo dell'header 'From' in una richiesta HTTP?
Qual è lo scopo dell'header 'From' in una richiesta HTTP?
Signup and view all the answers
Qual è la funzione dell'header 'Host' in HTTP 1.1?
Qual è la funzione dell'header 'Host' in HTTP 1.1?
Signup and view all the answers
Come funziona l'header 'If-None-Match' in una richiesta HTTP?
Come funziona l'header 'If-None-Match' in una richiesta HTTP?
Signup and view all the answers
Cosa fa l'header 'If-Modified-Since' in una richiesta HTTP?
Cosa fa l'header 'If-Modified-Since' in una richiesta HTTP?
Signup and view all the answers
Qual è l'effetto dell'header 'If-Unmodified-Since' in una richiesta HTTP?
Qual è l'effetto dell'header 'If-Unmodified-Since' in una richiesta HTTP?
Signup and view all the answers
Qual è la funzionalità dell'header 'If-Range' in una richiesta HTTP?
Qual è la funzionalità dell'header 'If-Range' in una richiesta HTTP?
Signup and view all the answers
Qual è il beneficio principale dei meccanismi condizionali in HTTP?
Qual è il beneficio principale dei meccanismi condizionali in HTTP?
Signup and view all the answers
Come contribuiscono gli header condizionali alla gestione della cache in HTTP?
Come contribuiscono gli header condizionali alla gestione della cache in HTTP?
Signup and view all the answers
Qual è la funzione principale dell'ETag nelle comunicazioni HTTP?
Qual è la funzione principale dell'ETag nelle comunicazioni HTTP?
Signup and view all the answers
Qual è la differenza principale tra ETag 'strong' e 'weak'?
Qual è la differenza principale tra ETag 'strong' e 'weak'?
Signup and view all the answers
Come l'header 'Accept' migliora l'interazione tra client e server in HTTP?
Come l'header 'Accept' migliora l'interazione tra client e server in HTTP?
Signup and view all the answers
Cosa indica il parametro di qualità 'q' negli header di richiesta HTTP?
Cosa indica il parametro di qualità 'q' negli header di richiesta HTTP?
Signup and view all the answers
Qual è l'importanza dell'header 'Accept-Language' in una richiesta HTTP?
Qual è l'importanza dell'header 'Accept-Language' in una richiesta HTTP?
Signup and view all the answers
In che modo l'header 'Accept-Encoding' influisce sull'efficienza della trasmissione dei dati?
In che modo l'header 'Accept-Encoding' influisce sull'efficienza della trasmissione dei dati?
Signup and view all the answers
Qual è la relazione tra la versione 'weak' dell'ETag e la trasmissione dei dati simili?
Qual è la relazione tra la versione 'weak' dell'ETag e la trasmissione dei dati simili?
Signup and view all the answers
Cosa avviene se il formato di lingua preferito dall'utente non è disponibile nella risposta del server?
Cosa avviene se il formato di lingua preferito dall'utente non è disponibile nella risposta del server?
Signup and view all the answers
In che modo gli header 'Accept-Charset' e 'Accept-Encoding' collaborano per ottimizzare la risposta del server?
In che modo gli header 'Accept-Charset' e 'Accept-Encoding' collaborano per ottimizzare la risposta del server?
Signup and view all the answers
Qual è il significato dell'esempio 'Accept-Language: it, en-GB;q=0.8, en;q=0.7'?
Qual è il significato dell'esempio 'Accept-Language: it, en-GB;q=0.8, en;q=0.7'?
Signup and view all the answers
Qual è il ruolo dell'header If-Unmodified-Since in una richiesta HTTP?
Qual è il ruolo dell'header If-Unmodified-Since in una richiesta HTTP?
Signup and view all the answers
Come funziona l'header Max-Forwards in una richiesta HTTP?
Come funziona l'header Max-Forwards in una richiesta HTTP?
Signup and view all the answers
Qual è la differenza tra l'header Authorization e Proxy-Authorization?
Qual è la differenza tra l'header Authorization e Proxy-Authorization?
Signup and view all the answers
Cosa consente di fare l'header Range in una richiesta HTTP?
Cosa consente di fare l'header Range in una richiesta HTTP?
Signup and view all the answers
Qual è il significato dell'header Referer in una richiesta HTTP?
Qual è il significato dell'header Referer in una richiesta HTTP?
Signup and view all the answers
Come influisce l'header TE sulle richieste HTTP?
Come influisce l'header TE sulle richieste HTTP?
Signup and view all the answers
Qual è l'importanza dell'header User-Agent in una richiesta HTTP?
Qual è l'importanza dell'header User-Agent in una richiesta HTTP?
Signup and view all the answers
Cosa rappresenta il parametro di qualità (q) nell'header TE?
Cosa rappresenta il parametro di qualità (q) nell'header TE?
Signup and view all the answers
In che modo l'header Range permette la richiesta di byte finali di una risorsa?
In che modo l'header Range permette la richiesta di byte finali di una risorsa?
Signup and view all the answers
A cosa serve l'header 'Accept-Ranges' in una risposta HTTP?
A cosa serve l'header 'Accept-Ranges' in una risposta HTTP?
Signup and view all the answers
Qual è la funzione dell'header 'Location' nelle risposte HTTP?
Qual è la funzione dell'header 'Location' nelle risposte HTTP?
Signup and view all the answers
Cosa rappresenta l'header 'Retry-After' in una risposta HTTP?
Cosa rappresenta l'header 'Retry-After' in una risposta HTTP?
Signup and view all the answers
Qual è il significato dell'header 'Server' in una comunicazione HTTP?
Qual è il significato dell'header 'Server' in una comunicazione HTTP?
Signup and view all the answers
Come influisce l'header 'Vary' sulla cache delle risposte HTTP?
Come influisce l'header 'Vary' sulla cache delle risposte HTTP?
Signup and view all the answers
Cosa indica l'header 'Age' in una risposta HTTP?
Cosa indica l'header 'Age' in una risposta HTTP?
Signup and view all the answers
Qual è la differenza tra i valori 'bytes' e 'none' nell'header 'Accept-Ranges'?
Qual è la differenza tra i valori 'bytes' e 'none' nell'header 'Accept-Ranges'?
Signup and view all the answers
Qual è l'importanza dell'header 'Content-Type' nella risposta HTTP?
Qual è l'importanza dell'header 'Content-Type' nella risposta HTTP?
Signup and view all the answers
Come può l'header 'User-Agent' influenzare le risposte del server?
Come può l'header 'User-Agent' influenzare le risposte del server?
Signup and view all the answers
Qual è il ruolo dell'header 'Vary: Accept-Language'?
Qual è il ruolo dell'header 'Vary: Accept-Language'?
Signup and view all the answers
Che cos'è l'header max-age
e come influisce sulla memorizzazione in cache delle risorse?
Che cos'è l'header max-age
e come influisce sulla memorizzazione in cache delle risorse?
Signup and view all the answers
Cosa implica l'header no-store
nelle risposte HTTP?
Cosa implica l'header no-store
nelle risposte HTTP?
Signup and view all the answers
Qual è la funzione dell'header Vary
nelle risposte delle cache proxy?
Qual è la funzione dell'header Vary
nelle risposte delle cache proxy?
Signup and view all the answers
In cosa consiste l'header Retry-After
e quando viene utilizzato?
In cosa consiste l'header Retry-After
e quando viene utilizzato?
Signup and view all the answers
Cosa rappresenta l'header Location
nelle risposte HTTP?
Cosa rappresenta l'header Location
nelle risposte HTTP?
Signup and view all the answers
Qual è il significato di private
nell'header Cache-Control
?
Qual è il significato di private
nell'header Cache-Control
?
Signup and view all the answers
Che ruolo svolge l'header Server
in una comunicazione HTTP?
Che ruolo svolge l'header Server
in una comunicazione HTTP?
Signup and view all the answers
Cosa significa il termine proxy-revalidate
nelle politiche di caching?
Cosa significa il termine proxy-revalidate
nelle politiche di caching?
Signup and view all the answers
In che modo min-fresh
influisce sulla freschezza delle risorse nella cache?
In che modo min-fresh
influisce sulla freschezza delle risorse nella cache?
Signup and view all the answers
Qual è il principale vantaggio dell'header Cache-Control rispetto a Pragma in HTTP 1.1?
Qual è il principale vantaggio dell'header Cache-Control rispetto a Pragma in HTTP 1.1?
Signup and view all the answers
In che modo l'header WWW-Authenticate migliora l'autenticazione in HTTP 1.1?
In che modo l'header WWW-Authenticate migliora l'autenticazione in HTTP 1.1?
Signup and view all the answers
Qual è la funzione dell'header Age in HTTP 1.1?
Qual è la funzione dell'header Age in HTTP 1.1?
Signup and view all the answers
Che ruolo svolge l'header Connection: close in una richiesta HTTP?
Che ruolo svolge l'header Connection: close in una richiesta HTTP?
Signup and view all the answers
Quali direttive di Cache-Control possono essere utilizzate per proteggere dati sensibili?
Quali direttive di Cache-Control possono essere utilizzate per proteggere dati sensibili?
Signup and view all the answers
Come influiscono le connessioni persistenti sulla performance delle richieste in HTTP 1.1?
Come influiscono le connessioni persistenti sulla performance delle richieste in HTTP 1.1?
Signup and view all the answers
Qual è la differenza principale tra HTTP 1.0 e HTTP 1.1 nella gestione della connessione?
Qual è la differenza principale tra HTTP 1.0 e HTTP 1.1 nella gestione della connessione?
Signup and view all the answers
In che modo l'header Date è applicato nelle richieste e nelle risposte HTTP?
In che modo l'header Date è applicato nelle richieste e nelle risposte HTTP?
Signup and view all the answers
Cosa significa il termine 'pipelining' in HTTP 1.1?
Cosa significa il termine 'pipelining' in HTTP 1.1?
Signup and view all the answers
Qual è l'utilità della compatibilità di Pragma in HTTP 1.1?
Qual è l'utilità della compatibilità di Pragma in HTTP 1.1?
Signup and view all the answers
Qual è la funzione dell'header Via in una richiesta HTTP?
Qual è la funzione dell'header Via in una richiesta HTTP?
Signup and view all the answers
Cosa indica il codice di avviso 110 in un messaggio HTTP?
Cosa indica il codice di avviso 110 in un messaggio HTTP?
Signup and view all the answers
Qual è lo scopo dell'header Content-MD5?
Qual è lo scopo dell'header Content-MD5?
Signup and view all the answers
Come funziona l'header Content-Range in una richiesta HTTP?
Come funziona l'header Content-Range in una richiesta HTTP?
Signup and view all the answers
A cosa serve l'header Last-Modified?
A cosa serve l'header Last-Modified?
Signup and view all the answers
Qual è il significato del codice di stato 206 in HTTP?
Qual è il significato del codice di stato 206 in HTTP?
Signup and view all the answers
Cos'è un codice di stato 304 e quando viene restituito?
Cos'è un codice di stato 304 e quando viene restituito?
Signup and view all the answers
Cosa implica l'uso dell'header Warning in una risposta HTTP?
Cosa implica l'uso dell'header Warning in una risposta HTTP?
Signup and view all the answers
Quale tipo di problemi può identificare il digest MD5 contenuto in Content-MD5?
Quale tipo di problemi può identificare il digest MD5 contenuto in Content-MD5?
Signup and view all the answers
In che modo un proxy può utilizzare l'header Warning per gestire i problemi?
In che modo un proxy può utilizzare l'header Warning per gestire i problemi?
Signup and view all the answers
Qual è la principale differenza tra 'Max-Age' e 'Expires' nella gestione della cache?
Qual è la principale differenza tra 'Max-Age' e 'Expires' nella gestione della cache?
Signup and view all the answers
Cosa indica l'header 's-maxage' e a chi si rivolge?
Cosa indica l'header 's-maxage' e a chi si rivolge?
Signup and view all the answers
In che modo l'header 'Trailer' è utile nella trasmissione di dati di grandi dimensioni?
In che modo l'header 'Trailer' è utile nella trasmissione di dati di grandi dimensioni?
Signup and view all the answers
Qual è il ruolo dell'header 'Upgrade' in una richiesta HTTP?
Qual è il ruolo dell'header 'Upgrade' in una richiesta HTTP?
Signup and view all the answers
Perché 'Max-Age' ha priorità su 'Expires' quando sono presenti entrambi negli header?
Perché 'Max-Age' ha priorità su 'Expires' quando sono presenti entrambi negli header?
Signup and view all the answers
Qual è il significato della codifica 'chunked' nel contesto di HTTP?
Qual è il significato della codifica 'chunked' nel contesto di HTTP?
Signup and view all the answers
Qual è l'importanza della direttiva 'Cache-Control' nel contesto della gestione della cache?
Qual è l'importanza della direttiva 'Cache-Control' nel contesto della gestione della cache?
Signup and view all the answers
Cosa implica utilizzare un valore di 'max-age' di 1800 secondi in una richiesta HTTP?
Cosa implica utilizzare un valore di 'max-age' di 1800 secondi in una richiesta HTTP?
Signup and view all the answers
Che cosa succede se un client invia un 'Upgrade' a una versione di protocollo non supportata dal server?
Che cosa succede se un client invia un 'Upgrade' a una versione di protocollo non supportata dal server?
Signup and view all the answers
Qual è il significato del valore 'identity' nell'header di codifica?
Qual è il significato del valore 'identity' nell'header di codifica?
Signup and view all the answers
Quali sono i due principali modi per accedere a un database con PHP?
Quali sono i due principali modi per accedere a un database con PHP?
Signup and view all the answers
Cosa fa la funzione mysqli_connect()
in PHP?
Cosa fa la funzione mysqli_connect()
in PHP?
Signup and view all the answers
Qual è un vantaggio principale dell'utilizzo di PDO rispetto a metodi specifici come mysqli?
Qual è un vantaggio principale dell'utilizzo di PDO rispetto a metodi specifici come mysqli?
Signup and view all the answers
Che informazioni otteniamo usando mysqli_connect_errno()
?
Che informazioni otteniamo usando mysqli_connect_errno()
?
Signup and view all the answers
In caso di errore di connessione, quale messaggio è raccomandato mostrare all'utente finale?
In caso di errore di connessione, quale messaggio è raccomandato mostrare all'utente finale?
Signup and view all the answers
Qual è il significato della variabile $connessione
in un'applicazione PHP?
Qual è il significato della variabile $connessione
in un'applicazione PHP?
Signup and view all the answers
Quali tipi di query SQL possono essere eseguite una volta stabilita una connessione?
Quali tipi di query SQL possono essere eseguite una volta stabilita una connessione?
Signup and view all the answers
In che modo PDO migliora l'efficienza del codice rispetto all'accesso diretto?
In che modo PDO migliora l'efficienza del codice rispetto all'accesso diretto?
Signup and view all the answers
Quali parametri devono essere specificati per connettersi a un database MySQL?
Quali parametri devono essere specificati per connettersi a un database MySQL?
Signup and view all the answers
Cosa restituisce mysqli_connect_error()
?
Cosa restituisce mysqli_connect_error()
?
Signup and view all the answers
Qual è il vantaggio principale dell'utilizzo dei prepared statements in PHP rispetto alle query standard?
Qual è il vantaggio principale dell'utilizzo dei prepared statements in PHP rispetto alle query standard?
Signup and view all the answers
Come viene definito un result set in PHP e cosa rappresenta?
Come viene definito un result set in PHP e cosa rappresenta?
Signup and view all the answers
Qual è il rischio principale associato alla visualizzazione degli errori di debug agli utenti finali?
Qual è il rischio principale associato alla visualizzazione degli errori di debug agli utenti finali?
Signup and view all the answers
Cosa deve contenere un messaggio per l'utente finale quando si verifica un errore di accesso al database?
Cosa deve contenere un messaggio per l'utente finale quando si verifica un errore di accesso al database?
Signup and view all the answers
Qual è il ruolo di mysqli_connect_error() nel contesto della gestione degli errori in PHP?
Qual è il ruolo di mysqli_connect_error() nel contesto della gestione degli errori in PHP?
Signup and view all the answers
In che modo l'uso di prepared statements aiuta a migliorare l'efficienza delle query?
In che modo l'uso di prepared statements aiuta a migliorare l'efficienza delle query?
Signup and view all the answers
Qual è la differenza principale tra gli errori di debug e i messaggi per l'utente finale?
Qual è la differenza principale tra gli errori di debug e i messaggi per l'utente finale?
Signup and view all the answers
Perché i prepared statements sono considerati una buona pratica nella programmazione sicura in PHP?
Perché i prepared statements sono considerati una buona pratica nella programmazione sicura in PHP?
Signup and view all the answers
Cosa comporta la prima preparazione di una query utilizzando prepared statements in PHP?
Cosa comporta la prima preparazione di una query utilizzando prepared statements in PHP?
Signup and view all the answers
Come funziona la funzione bind_param() nei prepared statements in PHP?
Come funziona la funzione bind_param() nei prepared statements in PHP?
Signup and view all the answers
Come si estrae un record da un result set in PHP utilizzando mysqli?
Come si estrae un record da un result set in PHP utilizzando mysqli?
Signup and view all the answers
Qual è la funzione utilizzata per liberare le risorse di un result set in PHP?
Qual è la funzione utilizzata per liberare le risorse di un result set in PHP?
Signup and view all the answers
Cosa si deve fare se una query a un database restituisce un errore?
Cosa si deve fare se una query a un database restituisce un errore?
Signup and view all the answers
Quale comando si usa per chiudere una connessione a un database in PHP?
Quale comando si usa per chiudere una connessione a un database in PHP?
Signup and view all the answers
Come si può estrarre tutti i campi di una tabella in PHP usando mysqli?
Come si può estrarre tutti i campi di una tabella in PHP usando mysqli?
Signup and view all the answers
Qual è il risultato se si tenta di usare mysqli_fetch_assoc()
su un result set non valido?
Qual è il risultato se si tenta di usare mysqli_fetch_assoc()
su un result set non valido?
Signup and view all the answers
Perché è importante gestire gli errori nelle query SQL in PHP?
Perché è importante gestire gli errori nelle query SQL in PHP?
Signup and view all the answers
Quale metodo si può utilizzare per visualizzare un campo specifico da un record in un result set?
Quale metodo si può utilizzare per visualizzare un campo specifico da un record in un result set?
Signup and view all the answers
Qual è il potenziale problema di non utilizzare mysqli_free_result()
?
Qual è il potenziale problema di non utilizzare mysqli_free_result()
?
Signup and view all the answers
Cosa succede se si tenta di usare mysqli_query()
su una connessione chiusa?
Cosa succede se si tenta di usare mysqli_query()
su una connessione chiusa?
Signup and view all the answers
Qual è la funzione di mysqli_close()
nella gestione delle connessioni MySQL?
Qual è la funzione di mysqli_close()
nella gestione delle connessioni MySQL?
Signup and view all the answers
Come si gestisce un errore di connessione in MySQL?
Come si gestisce un errore di connessione in MySQL?
Signup and view all the answers
Quali sono le quattro fasi di una query SQL?
Quali sono le quattro fasi di una query SQL?
Signup and view all the answers
In che modo si è sicuri di evitare errori di interpretazione nelle stringhe SQL con variabili PHP?
In che modo si è sicuri di evitare errori di interpretazione nelle stringhe SQL con variabili PHP?
Signup and view all the answers
Cosa restituisce mysqli_query()
se la query è una SELECT
?
Cosa restituisce mysqli_query()
se la query è una SELECT
?
Signup and view all the answers
Che tipo di messaggio è meglio visualizzare all'utente finale in caso di errore di collegamento al database?
Che tipo di messaggio è meglio visualizzare all'utente finale in caso di errore di collegamento al database?
Signup and view all the answers
Qual è il valore predefinito della porta utilizzata da MySQL quando non viene specificata?
Qual è il valore predefinito della porta utilizzata da MySQL quando non viene specificata?
Signup and view all the answers
Qual è la procedura corretta per eseguire una query SQL una volta stabilita la connessione?
Qual è la procedura corretta per eseguire una query SQL una volta stabilita la connessione?
Signup and view all the answers
Qual è la differenza tra le query SQL che producono risultati e quelle che non lo fanno?
Qual è la differenza tra le query SQL che producono risultati e quelle che non lo fanno?
Signup and view all the answers
Perché è importante gestire le query SQL in fasi?
Perché è importante gestire le query SQL in fasi?
Signup and view all the answers
Qual è il risultato di un utilizzo errato della funzione mysqli_fetch_assoc()
?
Qual è il risultato di un utilizzo errato della funzione mysqli_fetch_assoc()
?
Signup and view all the answers
Come può essere gestito un result set vuoto con mysqli_fetch_assoc()
?
Come può essere gestito un result set vuoto con mysqli_fetch_assoc()
?
Signup and view all the answers
Qual è la differenza tra l'uso di un ciclo while
e un ciclo for
per iterare un result set?
Qual è la differenza tra l'uso di un ciclo while
e un ciclo for
per iterare un result set?
Signup and view all the answers
Qual è il vantaggio principale dei prepared statements in PHP?
Qual è il vantaggio principale dei prepared statements in PHP?
Signup and view all the answers
Cosa rappresenta il segnaposto ?
nei prepared statements?
Cosa rappresenta il segnaposto ?
nei prepared statements?
Signup and view all the answers
Quali tipi di variabili possono essere associati ai segnaposto nei prepared statements?
Quali tipi di variabili possono essere associati ai segnaposto nei prepared statements?
Signup and view all the answers
In che modo mysqli_stmt_bind_param()
contribuisce alla sicurezza delle query?
In che modo mysqli_stmt_bind_param()
contribuisce alla sicurezza delle query?
Signup and view all the answers
Qual è il valore restituito dalla funzione mysqli_num_rows()
se il result set è vuoto?
Qual è il valore restituito dalla funzione mysqli_num_rows()
se il result set è vuoto?
Signup and view all the answers
Perché è preferibile utilizzare un ciclo while
per scorrere le righe in un result set?
Perché è preferibile utilizzare un ciclo while
per scorrere le righe in un result set?
Signup and view all the answers
Cosa fa la funzione mysqli_prepare()
?
Cosa fa la funzione mysqli_prepare()
?
Signup and view all the answers
Qual è il primo passo da compiere nella gestione di un prepared statement in PHP?
Qual è il primo passo da compiere nella gestione di un prepared statement in PHP?
Signup and view all the answers
Qual è il ruolo di mysqli_stmt_bind_param()
nei prepared statements?
Qual è il ruolo di mysqli_stmt_bind_param()
nei prepared statements?
Signup and view all the answers
Cosa fa il metodo mysqli_stmt_fetch()
?
Cosa fa il metodo mysqli_stmt_fetch()
?
Signup and view all the answers
In quale contesto è utile chiudere un prepared statement con mysqli_stmt_close()
?
In quale contesto è utile chiudere un prepared statement con mysqli_stmt_close()
?
Signup and view all the answers
Perché l'utilizzo dei prepared statements è considerato più sicuro rispetto all'utilizzo diretto delle query?
Perché l'utilizzo dei prepared statements è considerato più sicuro rispetto all'utilizzo diretto delle query?
Signup and view all the answers
Qual è la funzione principale di mysqli_stmt_bind_result()
?
Qual è la funzione principale di mysqli_stmt_bind_result()
?
Signup and view all the answers
Nell'esempio fornito, che tipo di dato è associato al parametro ?
in mysqli_stmt_bind_param()
?
Nell'esempio fornito, che tipo di dato è associato al parametro ?
in mysqli_stmt_bind_param()
?
Signup and view all the answers
Cosa succede se non si chiude una connessione a un'opzione di prepared statement?
Cosa succede se non si chiude una connessione a un'opzione di prepared statement?
Signup and view all the answers
Qual è l'obiettivo principale di utilizzare mysqli_stmt_execute()
?
Qual è l'obiettivo principale di utilizzare mysqli_stmt_execute()
?
Signup and view all the answers
Qual è il risultato atteso dall'uso di printf()
nel ciclo foreach
dell'esempio?
Qual è il risultato atteso dall'uso di printf()
nel ciclo foreach
dell'esempio?
Signup and view all the answers
Che funzione svolge mysqli_stmt_bind_param nei prepared statements?
Che funzione svolge mysqli_stmt_bind_param nei prepared statements?
Signup and view all the answers
Qual è il risultato di eseguire mysqli_stmt_fetch() dopo l'associazione delle colonne?
Qual è il risultato di eseguire mysqli_stmt_fetch() dopo l'associazione delle colonne?
Signup and view all the answers
Quale vantaggio offrono i prepared statements nella gestione dei dati degli utenti?
Quale vantaggio offrono i prepared statements nella gestione dei dati degli utenti?
Signup and view all the answers
Cosa deve essere fatto alla fine di un prepared statement in PHP?
Cosa deve essere fatto alla fine di un prepared statement in PHP?
Signup and view all the answers
Come viene utilizzata la variabile $matricola nel ciclo foreach nell'esempio di codice?
Come viene utilizzata la variabile $matricola nel ciclo foreach nell'esempio di codice?
Signup and view all the answers
Qual è il tipo di dati associato al parametro in mysqli_stmt_bind_param per le matricole?
Qual è il tipo di dati associato al parametro in mysqli_stmt_bind_param per le matricole?
Signup and view all the answers
Come si stampa il cognome all'interno del ciclo foreach?
Come si stampa il cognome all'interno del ciclo foreach?
Signup and view all the answers
Qual è la funzione di mysqli_fetch_assoc() nel contesto di un result set?
Qual è la funzione di mysqli_fetch_assoc() nel contesto di un result set?
Signup and view all the answers
Qual è la sintassi corretta per preparare un comando SQL in PHP?
Qual è la sintassi corretta per preparare un comando SQL in PHP?
Signup and view all the answers
Perché è importante associare variabili a risultati in un prepared statement?
Perché è importante associare variabili a risultati in un prepared statement?
Signup and view all the answers
Cosa restituisce mysqli_fetch_assoc() quando non ci sono più righe da leggere?
Cosa restituisce mysqli_fetch_assoc() quando non ci sono più righe da leggere?
Signup and view all the answers
Che tipo di architettura offre un prepared statement rispetto a una query SQL normale?
Che tipo di architettura offre un prepared statement rispetto a una query SQL normale?
Signup and view all the answers
Come è possibile iterare attraverso tutte le righe di un result set usando mysqli_fetch_assoc()?
Come è possibile iterare attraverso tutte le righe di un result set usando mysqli_fetch_assoc()?
Signup and view all the answers
Qual è il vantaggio principale di utilizzare i Prepared Statements in SQL?
Qual è il vantaggio principale di utilizzare i Prepared Statements in SQL?
Signup and view all the answers
Quale funzione viene utilizzata per associare segnaposto a variabili nei Prepared Statements?
Quale funzione viene utilizzata per associare segnaposto a variabili nei Prepared Statements?
Signup and view all the answers
Che tipo di struttura dati restituisce mysqli_fetch_assoc() per una riga di un result set?
Che tipo di struttura dati restituisce mysqli_fetch_assoc() per una riga di un result set?
Signup and view all the answers
Qual è l'uso di mysqli_num_rows() nel contesto dell'iterazione su un result set?
Qual è l'uso di mysqli_num_rows() nel contesto dell'iterazione su un result set?
Signup and view all the answers
Come si crea un Prepared Statement in PHP usando mysqli_prepare()?
Come si crea un Prepared Statement in PHP usando mysqli_prepare()?
Signup and view all the answers
In che modo il modo di scorrere un result set cambia se si utilizza un ciclo for invece di un ciclo while?
In che modo il modo di scorrere un result set cambia se si utilizza un ciclo for invece di un ciclo while?
Signup and view all the answers
Qual è il significato di un segnaposto (?) in un Prepared Statement?
Qual è il significato di un segnaposto (?) in un Prepared Statement?
Signup and view all the answers
Qual è il principale vantaggio dell'interfaccia PHPMyAdmin per la gestione di MySQL?
Qual è il principale vantaggio dell'interfaccia PHPMyAdmin per la gestione di MySQL?
Signup and view all the answers
Come si può accedere a PHPMyAdmin nell'ambiente fornito?
Come si può accedere a PHPMyAdmin nell'ambiente fornito?
Signup and view all the answers
Quali informazioni vengono richieste all'utente per accedere a PHPMyAdmin?
Quali informazioni vengono richieste all'utente per accedere a PHPMyAdmin?
Signup and view all the answers
Quale funzione svolge il client a linea di comando di MySQL?
Quale funzione svolge il client a linea di comando di MySQL?
Signup and view all the answers
Qual è il ruolo di PHPMyAdmin nella gestione dei database?
Qual è il ruolo di PHPMyAdmin nella gestione dei database?
Signup and view all the answers
Come supporta MySQL l'accesso remoto al database?
Come supporta MySQL l'accesso remoto al database?
Signup and view all the answers
Perché un DBMS è considerato indispensabile in applicazioni con dati complessi?
Perché un DBMS è considerato indispensabile in applicazioni con dati complessi?
Signup and view all the answers
Perché PHPMyAdmin è considerato utile per utenti con poca esperienza in SQL?
Perché PHPMyAdmin è considerato utile per utenti con poca esperienza in SQL?
Signup and view all the answers
Quali sono le principali differenze tra MySQL e MariaDB?
Quali sono le principali differenze tra MySQL e MariaDB?
Signup and view all the answers
Quali risorse supportano PHPMyAdmin per aiutare gli utenti?
Quali risorse supportano PHPMyAdmin per aiutare gli utenti?
Signup and view all the answers
Quale possibilità offre PHPMyAdmin per l'esecuzione di comandi SQL?
Quale possibilità offre PHPMyAdmin per l'esecuzione di comandi SQL?
Signup and view all the answers
Quali tipologie di database sono emerse oltre i database relazionali?
Quali tipologie di database sono emerse oltre i database relazionali?
Signup and view all the answers
Come un DBMS garantisce l'integrità dei dati durante le operazioni?
Come un DBMS garantisce l'integrità dei dati durante le operazioni?
Signup and view all the answers
Cosa limita il supporto di PHPMyAdmin nella gestione grafica dei database?
Cosa limita il supporto di PHPMyAdmin nella gestione grafica dei database?
Signup and view all the answers
Quali opzioni sono disponibili per il supporto avanzato di PHPMyAdmin?
Quali opzioni sono disponibili per il supporto avanzato di PHPMyAdmin?
Signup and view all the answers
Qual è l'importanza della connessione TCP/IP per i database moderni?
Qual è l'importanza della connessione TCP/IP per i database moderni?
Signup and view all the answers
Come viene strutturato un database relazionale?
Come viene strutturato un database relazionale?
Signup and view all the answers
Qual è il vantaggio principale dell'uso di un'interfaccia visuale per la gestione del database?
Qual è il vantaggio principale dell'uso di un'interfaccia visuale per la gestione del database?
Signup and view all the answers
In quali situazioni l'uso di un DBMS diventa indispensabile?
In quali situazioni l'uso di un DBMS diventa indispensabile?
Signup and view all the answers
Qual è l'utilità principale di SQL nel contesto di MySQL e MariaDB?
Qual è l'utilità principale di SQL nel contesto di MySQL e MariaDB?
Signup and view all the answers
Quali sono i requisiti minimi per eseguire PHPMyAdmin?
Quali sono i requisiti minimi per eseguire PHPMyAdmin?
Signup and view all the answers
Quali database sono supportati da PHPMyAdmin?
Quali database sono supportati da PHPMyAdmin?
Signup and view all the answers
Qual è il ruolo di JavaScript nell'interfaccia di PHPMyAdmin?
Qual è il ruolo di JavaScript nell'interfaccia di PHPMyAdmin?
Signup and view all the answers
Come si può esportare un database utilizzando PHPMyAdmin?
Come si può esportare un database utilizzando PHPMyAdmin?
Signup and view all the answers
Quali operazioni possono essere eseguite sulle tabelle in PHPMyAdmin?
Quali operazioni possono essere eseguite sulle tabelle in PHPMyAdmin?
Signup and view all the answers
Quali funzionalità avanzate offre PHPMyAdmin per migliorare l'efficienza delle query?
Quali funzionalità avanzate offre PHPMyAdmin per migliorare l'efficienza delle query?
Signup and view all the answers
Cosa rappresenta la colonna di sinistra nell'interfaccia di PHPMyAdmin?
Cosa rappresenta la colonna di sinistra nell'interfaccia di PHPMyAdmin?
Signup and view all the answers
Qual è il rischio principale associato all'accesso admin in PHPMyAdmin?
Qual è il rischio principale associato all'accesso admin in PHPMyAdmin?
Signup and view all the answers
Come si crea un database in PHPMyAdmin?
Come si crea un database in PHPMyAdmin?
Signup and view all the answers
Quali sono i passaggi fondamentali per creare una tabella in un database?
Quali sono i passaggi fondamentali per creare una tabella in un database?
Signup and view all the answers
Cosa si intende per gestione degli utenti in PHPMyAdmin e perché è importante?
Cosa si intende per gestione degli utenti in PHPMyAdmin e perché è importante?
Signup and view all the answers
Qual è la differenza tra un utente configurato per 'SELECT' e uno per 'INSERT' e 'UPDATE'?
Qual è la differenza tra un utente configurato per 'SELECT' e uno per 'INSERT' e 'UPDATE'?
Signup and view all the answers
Perché è comune limitare l'accesso dell'utente root solo all'interfaccia locale?
Perché è comune limitare l'accesso dell'utente root solo all'interfaccia locale?
Signup and view all the answers
Cosa implica specificare un valore di default per un campo nella creazione di una tabella?
Cosa implica specificare un valore di default per un campo nella creazione di una tabella?
Signup and view all the answers
Quali informazioni sono necessarie per creare un nuovo utente in PHPMyAdmin?
Quali informazioni sono necessarie per creare un nuovo utente in PHPMyAdmin?
Signup and view all the answers
In che modo l'accesso da IP specifico può influenzare la sicurezza del database?
In che modo l'accesso da IP specifico può influenzare la sicurezza del database?
Signup and view all the answers
Cosa accade se un utente è configurato solo per lettura in un database?
Cosa accade se un utente è configurato solo per lettura in un database?
Signup and view all the answers
Perché è importante specificare la lunghezza di un campo durante la creazione di una tabella?
Perché è importante specificare la lunghezza di un campo durante la creazione di una tabella?
Signup and view all the answers
Qual è il ruolo dei permessi di accesso nel garantire la sicurezza del database?
Qual è il ruolo dei permessi di accesso nel garantire la sicurezza del database?
Signup and view all the answers
Qual è la funzione del permesso DELETE in PHPMyAdmin?
Qual è la funzione del permesso DELETE in PHPMyAdmin?
Signup and view all the answers
Cosa consente il permesso ALTER agli utenti in PHPMyAdmin?
Cosa consente il permesso ALTER agli utenti in PHPMyAdmin?
Signup and view all the answers
Qual è l'importanza della funzione Shutdown in PHPMyAdmin?
Qual è l'importanza della funzione Shutdown in PHPMyAdmin?
Signup and view all the answers
In che consiste il processo di esportazione di un database in PHPMyAdmin?
In che consiste il processo di esportazione di un database in PHPMyAdmin?
Signup and view all the answers
Qual è la differenza tra le modalità di esportazione Quick e Custom in PHPMyAdmin?
Qual è la differenza tra le modalità di esportazione Quick e Custom in PHPMyAdmin?
Signup and view all the answers
Come si avvia l'importazione di un database in PHPMyAdmin?
Come si avvia l'importazione di un database in PHPMyAdmin?
Signup and view all the answers
Quali limitazioni possono essere impostate per un utente in PHPMyAdmin?
Quali limitazioni possono essere impostate per un utente in PHPMyAdmin?
Signup and view all the answers
Che tipo di query SQL può essere eseguita in PHPMyAdmin?
Che tipo di query SQL può essere eseguita in PHPMyAdmin?
Signup and view all the answers
Come si accede a PHPMyAdmin nel proprio ambiente?
Come si accede a PHPMyAdmin nel proprio ambiente?
Signup and view all the answers
Cosa rappresenta il permesso TRIGGER in PHPMyAdmin?
Cosa rappresenta il permesso TRIGGER in PHPMyAdmin?
Signup and view all the answers
Quali sono i parametri essenziali per connettersi a un database MySQL in PHP?
Quali sono i parametri essenziali per connettersi a un database MySQL in PHP?
Signup and view all the answers
Come si può determinare l'IP del database in PHP?
Come si può determinare l'IP del database in PHP?
Signup and view all the answers
Cosa significa 'architettura software' e quali componenti la compongono?
Cosa significa 'architettura software' e quali componenti la compongono?
Signup and view all the answers
In un'architettura stratificata, quali sono i tre livelli principali?
In un'architettura stratificata, quali sono i tre livelli principali?
Signup and view all the answers
Qual è il vantaggio principale dell'uso di protocolli nella comunicazione tra componenti software?
Qual è il vantaggio principale dell'uso di protocolli nella comunicazione tra componenti software?
Signup and view all the answers
Come l'architettura software stratificata contribuisce alla manutenibilità del codice?
Come l'architettura software stratificata contribuisce alla manutenibilità del codice?
Signup and view all the answers
Quali metodi possono essere utilizzati per la comunicazione tra componenti su nodi diversi?
Quali metodi possono essere utilizzati per la comunicazione tra componenti su nodi diversi?
Signup and view all the answers
Per quale motivo è importante aggiornare l'IP del database durante la connessione?
Per quale motivo è importante aggiornare l'IP del database durante la connessione?
Signup and view all the answers
Che ruolo ha l'Inter-Process Communication (IPC) nelle architetture software?
Che ruolo ha l'Inter-Process Communication (IPC) nelle architetture software?
Signup and view all the answers
Quali problemi può causare un'eccessiva modularità in un sistema software?
Quali problemi può causare un'eccessiva modularità in un sistema software?
Signup and view all the answers
In cosa consiste l'architettura a microservizi?
In cosa consiste l'architettura a microservizi?
Signup and view all the answers
Quali sfide presenta l'architettura a microservizi?
Quali sfide presenta l'architettura a microservizi?
Signup and view all the answers
Qual è un esempio di implementazione di microservizi in un sito di e-commerce?
Qual è un esempio di implementazione di microservizi in un sito di e-commerce?
Signup and view all the answers
Come comunicano i microservizi tra loro?
Come comunicano i microservizi tra loro?
Signup and view all the answers
In che modo le architetture orientate alla rete si differenziano da altre architetture software?
In che modo le architetture orientate alla rete si differenziano da altre architetture software?
Signup and view all the answers
Qual è una delle architetture di rete più importanti?
Qual è una delle architetture di rete più importanti?
Signup and view all the answers
Quali vantaggi offrono i microservizi rispetto ai moduli tradizionali?
Quali vantaggi offrono i microservizi rispetto ai moduli tradizionali?
Signup and view all the answers
Qual è uno svantaggio delle comunicazioni tra microservizi?
Qual è uno svantaggio delle comunicazioni tra microservizi?
Signup and view all the answers
In che modo gli strumenti di orchestrazione aiutano nella gestione dei microservizi?
In che modo gli strumenti di orchestrazione aiutano nella gestione dei microservizi?
Signup and view all the answers
Qual è la funzione principale del server nell'architettura client-server?
Qual è la funzione principale del server nell'architettura client-server?
Signup and view all the answers
Come si comporta un client dopo aver inviato una richiesta al server?
Come si comporta un client dopo aver inviato una richiesta al server?
Signup and view all the answers
Cosa distingue il server in termini di connessione nel modello client-server?
Cosa distingue il server in termini di connessione nel modello client-server?
Signup and view all the answers
Quali protocolli possono essere utilizzati per la comunicazione tra client e server?
Quali protocolli possono essere utilizzati per la comunicazione tra client e server?
Signup and view all the answers
Qual è un esempio tipico di server nell'architettura client-server?
Qual è un esempio tipico di server nell'architettura client-server?
Signup and view all the answers
In che modo il client interpreta le azioni dell'utente?
In che modo il client interpreta le azioni dell'utente?
Signup and view all the answers
Perché l'architettura client-server è considerata versatile?
Perché l'architettura client-server è considerata versatile?
Signup and view all the answers
Quale ruolo svolge la porta nel funzionamento di un server?
Quale ruolo svolge la porta nel funzionamento di un server?
Signup and view all the answers
Cosa significa che il server è connesso a una porta predeterminata?
Cosa significa che il server è connesso a una porta predeterminata?
Signup and view all the answers
Study Notes
HTTP 1.0 e i suoi limiti
- HTTP 1.0 è stato un importante passo avanti per la trasmissione delle risorse web ma presentava limiti legati all'ottimizzazione del trasferimento dei dati, soprattutto per le pagine dinamiche.
Problemi di HTTP 1.0
- L'HTTP 1.0 presentava problemi con la gestione delle pagine dinamiche perché il contenuto della pagina doveva essere dichiarato in anticipo tramite l'header
Content-Length
. Ciò non era sempre possibile con pagine generate dinamicamente, ad esempio con PHP. - L'HTTP 1.0 richiedeva una connessione TCP separata per ogni oggetto (immagine, file CSS, file HTML), aumentando l'overhead.
- Il meccanismo di caching di HTTP 1.0 era semplice e basato sull'header
Pragma
.
Risposta di HTTP 1.1 ai problemi di HTTP 1.0
- HTTP 1.1 ha introdotto connessioni persistenti, permettendo di utilizzare una singola connessione TCP per diverse risorse.
- HTTP 1.1 consente il
pipelining
, ovvero inviare più richieste in sequenza senza aspettare la risposta per ciascuna. - HTTP 1.1 ha meccanismo di caching più completo con la possibilità di specificare la durata della cache, verificare aggiornamenti e considerare proxy.
- HTTP 1.1 consente la trasmissione parziale delle risorse, risolvendo il problema del
Content-Length
delle pagine dinamiche. - HTTP 1.1 supporta la negoziazione della compressione e del linguaggio, adattando i contenuti in base alla lingua preferita dall'utente e comprimendo i dati quando possibile.
- HTTP 1.1 introduce il
virtual hosting
, consentendo a un singolo server con un unico indirizzo IP di ospitare più nomi di dominio tramite l'headerHost
.
Nuovi metodi HTTP 1.1
- Il protocollo HTTP 1.1 introduce metodi aggiuntivi rispetto a quelli standard di HTTP 1.0 (GET, POST, HEAD):
-
PUT
: per caricare una risorsa su un server. -
DELETE
: per eliminare una risorsa. -
TRACE
,OPTIONS
,CONNECT
: per funzioni di rete avanzate.
-
Sicurezza e autenticazione
- HTTP 1.1 include
HTTP Digest
, un sistema di autenticazione più sicuro rispetto al semplice username-password di HTTP 1.0. Questo sistema impedisce che la password venga trasmessa in chiaro.
Virtual Hosting
- Il virtual hosting consente a un singolo server web di ospitare più siti web con domini diversi.
- Per configurare un sistema di virtual hosting, è necessario configurare correttamente il server HTTP e il sistema DNS.
- Ogni sito web è mappato a una directory specifica nel file system del server, chiamata "document root", che contiene i file del sito web.
- Il DNS utilizza i record CNAME (Canonical Name) per mappare diversi nomi di dominio allo stesso indirizzo IP, consentendo ai siti web di condividere lo stesso spazio sul server.
- Il browser include il campo "Host" nell'header HTTP della richiesta, indicando il nome del dominio del sito web desiderato.
- Il server legge il campo "Host" dalla richiesta e accede alla directory document root appropriata per il sito web specificato.
Connessione Persistente
- HTTP 1.1 introduce il concetto di connessioni persistenti, che mantengono la connessione TCP aperta per più richieste consecutive.
- L'header "Connection: keep-alive" indica al server di mantenere la connessione aperta dopo aver risposto alla prima richiesta.
- Le connessioni persistenti riducono l'overhead di apertura e chiusura delle connessioni per ogni richiesta, migliorando l'efficienza.
- In assenza dell'header "Connection: keep-alive", il server e il browser sono comunque configurati con un timeout per chiudere automaticamente le connessioni inattive dopo un certo periodo.
- Le connessioni persistenti consentono al browser di richiedere più risorse (come immagini o file CSS) sullo stesso canale TCP, riducendo il tempo di caricamento della pagina web.
HTTP 1.1 e Connessioni Persistenti
- HTTP 1.1 introduce il concetto di connessioni persistenti, consentendo al browser di mantenere una singola connessione TCP per recuperare più risorse da un server.
- In HTTP 1.0, ogni risorsa (come un'immagine o un file multimediale) richiedeva una nuova connessione TCP, aumentando l'overhead e rallentando il caricamento delle pagine.
- Con le connessioni persistenti, il browser può richiedere la pagina principale e le sue risorse aggiuntive (ad esempio, la favicon) sulla stessa connessione TCP, riducendo il numero di connessioni aperte e chiuse.
- La connessione TCP rimane aperta dopo la richiesta della pagina principale, permettendo al browser di richiedere la favicon sulla stessa connessione, e quindi chiuderla solo dopo aver ricevuto entrambe le risorse.
- L'utilizzo di connessioni persistenti offre diversi vantaggi:
- Riduzione dell'overhead: meno connessioni TCP da aprire e chiudere, risparmiando tempo e risorse.
- Gestione migliore delle congestioni: le connessioni persistenti possono gestire più richieste contemporaneamente, migliorando l'efficienza e riducendo il rischio di congestione della rete.
- Pipelining delle richieste: il browser può inviare più richieste in sequenza sulla stessa connessione, prima di ricevere una risposta. Ciò riduce il tempo di attesa per le risorse successive, velocizzando il caricamento della pagina.
Compatibilità con HTTP 1.0
- HTTP 1.1 è retrocompatibile con HTTP 1.0, il che significa che i server che non supportano HTTP 1.1 continueranno a funzionare con i client che cercano di stabilire una connessione HTTP 1.1.
- Se un server non supporta HTTP 1.1, risponde con un errore di "versione non supportata" e il client fa downgrade alla versione 1.0.
Rischio di Attacchi Denial of Service
- Le connessioni persistenti in HTTP 1.1 possono comportare un rischio maggiore di attacchi DoS (Denial of Service).
- Un attaccante potrebbe aprire molte connessioni simultanee e tenerle inattive, esaurendo le risorse del server e rendendolo incapace di rispondere alle richieste valide.
- Gli attacchi DoS possono essere effettuati con richieste ripetute senza chiudere le connessioni, costringendo il server a esaurire la memoria per tracciare lo stato delle connessioni.
Connessioni Persistenti, Pipelining e Compressione
- Il pipelining delle richieste con connessioni persistenti consente al client di inviare più richieste sulla stessa connessione TCP prima di ricevere una risposta.
- Questo riduce il tempo di latenza per le risorse aggiuntive, velocizzando il caricamento della pagina.
- La compressione dei dati, come gzip, riduce l'utilizzo della banda e i tempi di trasmissione comprimendo i dati prima dell'invio.
- I dati compressi vengono decompressi dal client, richiedendo un'elaborazione aggiuntiva, ma riducendo il volume di dati da trasferire.
- La scelta della compressione dipende da diversi fattori:
- Potenza della CPU: server e client devono avere potenza di elaborazione sufficiente per comprimere e decomprimere i dati.
- Caratteristiche della rete: la velocità della connessione determina se la compressione è vantaggiosa.
- Consumo energetico: la compressione aumenta il consumo di energia, soprattutto su dispositivi a bassa potenza come sensori e componenti IoT.
Compressione dei Dati
- La compressione può essere applicata a due livelli: livello di dato e livello di trasmissione.
- Livello di dato: i dati vengono compressi e memorizzati in forma compressa sul dispositivo. La compressione è una caratteristica intrinseca dei dati e persiste anche dopo il salvataggio.
- Livello di trasmissione: la compressione serve a ottimizzare la trasmissione dati. Una volta decompressi, i dati tornano al formato originale senza traccia della compressione utilizzata.
Header di Codifica in HTTP 1.1
- Accept-Encoding: questo header specifica le codifiche (compressioni) che il client è in grado di supportare.
- Content-Encoding: questo header, presente nella risposta, indica la codifica scelta dal server per comprimere il contenuto.
Algoritmi di Compressione Supportati
- gzip: uno degli algoritmi open source di compressione più utilizzati.
- compress: un altro algoritmo classico su sistemi Unix.
- deflate: definito da diverse RFC, comunemente utilizzato per la compressione dei dati.
- identity: indica l'assenza di compressione.
Codifica Chunked
- La codifica chunked consente la trasmissione di dati in blocchi (chunk). Questa codifica è utile quando la dimensione complessiva del contenuto non è nota in anticipo, come nel caso di una pagina dinamica.
- Ogni blocco contiene la dimensione in byte, i dati del blocco e una sequenza di terminazione.
- Un blocco vuoto
0\r\n\r\n
indica la conclusione definitiva della trasmissione.
Valutazione delle Prestazioni HTTP
- La valutazione delle prestazioni di HTTP è influenzata da vari fattori, tra cui i dispositivi, la potenza di calcolo e la larghezza di banda disponibile.
- Un test del W3C ha confrontato le prestazioni di HTTP 1.0 e HTTP 1.1 con una pagina di esempio composta da 40 KB di HTML e 43 immagini (totale 130 KB).
- Le configurazioni testate includevano HTTP 1.0 con 4 connessioni simultanee, HTTP 1.1 con connessione persistente (senza pipeline), HTTP 1.1 con connessione persistente e pipeline, e infine HTTP 1.1 con pipeline e compressione.
- I risultati indicano che HTTP 1.1 con persistenza riduce il tempo di caricamento rispetto a HTTP 1.0, anche con una sola connessione.
- HTTP 1.1 con pipeline triplica la velocità rispetto a HTTP 1.0, con tempi di caricamento ancora più ridotti.
- I guadagni in prestazioni con la compressione variano, poiché molti dati possono già essere compressi all'origine, come i file .x o .xml.
Differenze Tra i Metodi PUT e POST
- Il metodo PUT invia dati a un URI specifico per memorizzare direttamente la risorsa inviata.
- È usato, ad esempio, per caricare file in un percorso specifico sul server.
- Il metodo POST invia dati a un URI per essere elaborati.
- È comune nei form HTML, dove i dati inviati vengono elaborati da un programma sul server (come un file PHP).
- PUT: Trasferisce una risorsa alla posizione URI specificata, non richiede elaborazione sul server. Esempio di risposta: 201 Created (risorsa nuova), 200 OK (aggiornamento di una risorsa esistente)
- POST: Invia dati alla URI per essere elaborati, generalmente inviando il contenuto a un programma per l'esecuzione di operazioni sui dati. La risposta può variare a seconda dell'elaborazione eseguita.
Metodo PUT
- Il metodo PUT consente di creare una risorsa se non esiste o di aggiornarla con nuovo contenuto se già presente.
- Un codice di risposta 200 OK indica che il contenuto è stato aggiornato correttamente.
Metodo DELETE
- Il metodo DELETE richiede la cancellazione di una risorsa specifica.
- Una risposta 200 OK indica che la richiesta è stata processata, ma non garantisce l'effettiva eliminazione della risorsa.
Metodo TRACE
- Il metodo TRACE traccia la catena di intermediari attraversati da una richiesta, inviando indietro una copia della stessa.
- Ogni intermediario può aggiungere il proprio identificativo all'header Via, permettendo di tracciare il percorso completo.
Metodo OPTIONS
- Il metodo OPTIONS permette al client di richiedere al server i metodi HTTP supportati per una risorsa o per l'intero server.
- L'header Max-Forwards limita il numero di intermediari che una richiesta OPTIONS può attraversare, prevenendo loop di trasmissione.
Metodo CONNECT
- Il metodo CONNECT crea un tunnel crittografato (HTTPS) tra client e server, bypassando gli intermediari.
- È utile per stabilire connessioni sicure, ad esempio per transazioni bancarie.
- Il proxy deve essere configurato per accettare CONNECT e permettere la connessione sicura.
Codice 100 CONTINUE
- Il codice 100 CONTINUE è introdotto per gestire trasmissioni di grandi dimensioni.
- Permette al client di inviare grandi quantità di dati solo dopo aver ricevuto conferma dal server.
- Il client usa l'header Expect: 100-continue per richiedere questa conferma.
Trasmissione Parziale
- La trasmissione parziale in HTTP 1.1 consente al client di richiedere solo parti specifiche di un file, migliorando l'efficienza
- La trasmissione parziale può essere effettuata tramite la codifica chunked oppure con la trasmissione in intervalli
Codifica Chunked
- La codifica chunked suddivide il file in blocchi (chunks) inviati progressivamente al client
Trasmissione a Intervalli
- Il client può richiedere specifiche porzioni di un file usando l'header Range
- Accept-Range indica se il server supporta la trasmissione in intervalli
-
Content-Range specifica l'intervallo richiesto dal client, ad esempio
bytes 200-300/1000
indica che si vuole scaricare solo il file dal byte 200 al 300, su un totale di 1000 byte
Entity Tag (ETag)
- L'ETag è un identificatore univoco associato a una specifica versione di una risorsa
- L'ETag aiuta a gestire la cache in modo condizionale e a verificare se una risorsa è stata aggiornata
- Ogni risorsa può avere un ETag che cambia ogni volta che la risorsa viene modificata
- Esistono due tipi di ETag:
- Strong ETag: identifica la stessa risorsa bit per bit
- Weak ETag (W/): indica che il contenuto è equivalente, ma potrebbe avere modifiche irrilevanti a livello di bit
Funzionamento di ETag
- L'ETag consente al client di richiedere una risorsa solo se è stata aggiornata, ottimizzando il traffico e risparmiando larghezza di banda
- L'header If-None-Match viene usato per richiedere una risorsa solo se è stata modificata
- Se l'ETag della risorsa sul server coincide con quello fornito dal client, il server risponde con
HTTP/1.1 304 Not Modified
- Altrimenti, se la risorsa è stata modificata, il server restituisce la versione aggiornata
ETag e Gestione della Cache
- Gli header If-Match e If-None-Match permettono controlli di cache più specifici
- If-Match: invia la risorsa solo se l'ETag coincide con quello fornito dal client
- If-None-Match: invia la risorsa solo se l'ETag non coincide (usato spesso per verificare aggiornamenti)
Flusso di Richieste con ETag e Range
- Il client può richiedere solo una parte specifica del contenuto usando Range, evitando di scaricare nuovamente dati già acquisiti
- Il server, in risposta a una richiesta parziale, usa
206 Partial Content
eContent-Range
- Gli ETag supportano le richieste condizionali, permettendo al client di sincronizzare la cache solo quando la risorsa è stata effettivamente aggiornata
I cookie e la privacy
- I cookie sono strumenti utili per gestire le sessioni e tracciare le interazioni degli utenti, ma sollevano importanti preoccupazioni sulla privacy.
- I cookie consentono ai siti web di monitorare le pagine visitate, la durata delle visite, il comportamento di navigazione e gli elementi cliccati.
- I cookie possono essere impostati per monitorare le interazioni con i banner pubblicitari, i link e gli elementi del sito.
- Il campo "domain" nei cookie determina quali domini possono accedervi. Un dominio troppo ampio può esporre i dati dei cookie a un numero eccessivo di server, creando potenziali vulnerabilità.
Problemi di sicurezza nei Cookie
- Sniffing dei pacchetti: I cookie possono essere intercettati in assenza di una connessione sicura. Tool come Wireshark possono catturare e leggere i cookie su reti non protette. Per mitigare questo problema, i cookie dovrebbero essere trasmessi esclusivamente tramite HTTPS.
- Web Spoofing: Un attaccante può impersonare un sito web legittimo, inducendo il browser a inviare i cookie a un server dannoso. Ad esempio, un server configurato come "www.polito.it" può ingannare i dispositivi per ottenere i cookie validi per il dominio "polito.it".
- Attacchi sui subdomain: In reti complesse, come quelle universitarie con centinaia di server, i cookie impostati per l'intero dominio possono essere accessibili da server non completamente autorizzati. Ad esempio, se un cookie è valido per "polito.it", un server non autorizzato all'interno di questo dominio potrebbe accedere ai dati del cookie, causando una fuga di dati.
- Malware e script dannosi: I cookie possono essere rubati da malware o script JavaScript. Un attaccante può infettare il browser o la rete dell'utente per ottenere i dati e inviarli a server non autorizzati.
Meccanismi di sicurezza nei Cookie
- Per ridurre i rischi di attacchi tramite cookie, è possibile configurare i cookie con opzioni di sicurezza aggiuntive:
- HTTPOnly: I cookie impostati come HTTPOnly non possono essere accessibili tramite JavaScript, riducendo il rischio di attacchi XSS (Cross-Site Scripting).
- Secure: I cookie con l'attributo "Secure" vengono inviati solo tramite connessioni HTTPS, limitando il rischio di intercettazioni su reti non sicure.
- SameSite: Il parametro SameSite definisce se un cookie può essere utilizzato solo dallo stesso sito o anche da siti di terze parti, limitando gli attacchi CSRF (Cross-Site Request Forgery).
Configurazioni e gestione delle sessioni tramite cookie
- È consigliabile evitare di memorizzare dati sensibili nei cookie.
- Separare i cookie in categorie essenziali (per il funzionamento del sito) e opzionali (per analisi e pubblicità) offre un miglior controllo.
- Il banner di consenso ai cookie dovrebbe consentire all'utente di rifiutare i cookie non essenziali.
Esempio di impostazione dei cookie
- Un cookie con gli attributi Secure, HTTPOnly e SameSite:
-
Set-Cookie: session_id=abc123; Secure; HttpOnly; SameSite=Strict
-
- Questo cookie:
- È accessibile solo tramite HTTPS (Secure).
- Non può essere letto da JavaScript (HttpOnly).
- Viene inviato solo in richieste dirette al dominio, evitando collegamenti da terze parti (SameSite=Strict).
Regole di Accettazione dei Cookie nei Browser
- I browser implementano regole per rifiutare i cookie potenzialmente pericolosi, garantendo la sicurezza dell'utente.
Path Mismatch
- Il percorso del cookie (path) deve essere un prefisso del percorso della risorsa richiesta.
- Se il percorso del cookie non corrisponde, il cookie viene rifiutato.
-
Esempio: un cookie impostato per
/pagamenti
non sarà accettato per una richiesta a/test
.
Domain Mismatch
- Il campo
domain
del cookie deve iniziare con un punto (.
). - Se manca, il dominio può essere manipolato per creare indirizzi falsi.
-
Esempio: un cookie valido per
polito.it
(senza punto iniziale) potrebbe essere usato per falsificare l'indirizzopolito.it
aggiungendo sottodomini o altre stringhe.
Host Match
- Il dominio del cookie deve includere l'host esatto della richiesta.
- Se manca, il cookie potrebbe essere inviato a server non autorizzati, violando la privacy dell'utente.
Set-Cookie2 e la Configurazioni Avanzate
- HTTP/1.1 introduce la sintassi
Set-Cookie2
per una configurazione avanzata dei cookie. -
Set-Cookie2
include attributi opzionali per un controllo più preciso:-
Commento
: descrive l'uso del cookie. -
Port
: specifica le porte per cui il cookie è valido. -
Max-Age
: imposta la durata del cookie in secondi. -
Version
: indica la versione del cookie (anche se di solito è costante). -
Discard
: indica se il cookie è volatile (scompare alla chiusura del browser).
-
Flag Secure e HttpOnly
-
Secure
: indica che il cookie deve essere inviato solo su connessioni HTTPS. -
HttpOnly
: impedisce agli script in esecuzione locale (come JavaScript) di accedere al cookie, proteggendo contro attacchi XSS.
Compatibilità tra Versioni
- L'introduzione di
Set-Cookie2
e il campoVersion
migliorano la compatibilità tra client e server. - Mentre i browser supportano
Set-Cookie2
, molti usano ancoraSet-Cookie
per compatibilità con i server meno recenti.
Attacchi Rilevanti contro i Cookie
- L'attributo
HttpOnly
protegge i cookie dall'accesso degli script, prevenendo attacchi come:- Web Spoofing: l'aggressore simula l'identità di un sito per ottenere i cookie.
- Subdomain Attack: uso improprio dei cookie tra domini simili.
HTTP e Sessioni
- L'HTTP è un protocollo senza stato (stateless), quindi non mantiene le informazioni di stato da una richiesta all'altra.
- Le sessioni risolvono questa limitazione, conservando informazioni tra le pagine di un sito web.
- PHP utilizza le sessioni per mantenere le informazioni degli utenti.
- Le sessioni sfruttano i cookie per memorizzare un identificativo univoco, ma i dati sono memorizzati sul server, garantendo maggiore sicurezza rispetto ai cookie.
Identificativo di Sessione PHP
- L’identificatore di sessione in PHP è un cookie chiamato PHPSESSID.
- Il server invia questo cookie al browser dell'utente quando accede a una sessione.
- Il cookie PHPSESSID identifica la sessione specifica di un utente.
Metodi Alternative di Gestione delle Sessioni
- Se i cookie sono disabilitati, l'identificativo di sessione può essere trasmesso tramite URL (GET) o altri metodi, ma questi metodi sono meno sicuri.
- Passare l'ID sessione via URL espone l'identificativo della sessione, aumentando il rischio di intercettazione.
Implementare le Sessioni in PHP
-
Controllo dello Stato delle Sessioni:
- La funzione session_status() determina lo stato della sessione:
- PHP_SESSION_DISABLED: le sessioni sono disabilitate.
- PHP_SESSION_NONE: nessuna sessione è attiva.
- PHP_SESSION_ACTIVE: una sessione è attiva.
- La funzione session_status() determina lo stato della sessione:
-
Inizializzazione di una Sessione:
- La funzione session_start() avvia una nuova sessione o riprende una sessione esistente.
- session_start() deve essere chiamata prima di qualsiasi output HTML per evitare errori nell'invio degli header.
-
Gestione delle Variabili di Sessione:
- L'array associativo globale $_SESSION consente di accedere alle variabili di sessione.
- Esempio:
-
$_SESSION['utente'] = 'Mario';
-
$_SESSION['lingua'] = 'IT';
-
- Esempio:
- L'array associativo globale $_SESSION consente di accedere alle variabili di sessione.
-
Controllo dell'esistenza di una variabile di sessione:
- La funzione isset() verifica se una variabile di sessione esiste.
- Esempio:
-
if (isset($_SESSION['utente'])) { echo $_SESSION['utente']; }
-
- Esempio:
- La funzione isset() verifica se una variabile di sessione esiste.
-
Cancellazione di una variabile di sessione:
- Utilizzare la funzione unset() per rimuovere una variabile di sessione.
- Esempio:
-
unset($_SESSION['utente']);
-
- Esempio:
- Utilizzare la funzione unset() per rimuovere una variabile di sessione.
-
Chiusura e Distruzione di una Sessione:
- session_write_close(): salva i dati della sessione e la chiude, senza cancellarli.
- session_unset(): cancella tutte le variabili di sessione.
- session_destroy(): distrugge la sessione corrente, eliminando tutti i dati associati.
Configurazioni Avanzate delle Sessioni
-
Modifica del Nome della Sessione:
- La funzione session_name() consente di cambiare il nome del cookie della sessione, utile per gestire più sessioni o modificare il loro comportamento.
- Esempio:
-
session_name('MYSESSIONID');
-
session_start();
-
- Esempio:
- La funzione session_name() consente di cambiare il nome del cookie della sessione, utile per gestire più sessioni o modificare il loro comportamento.
-
Modifica Parametri di Configurazione:
- Il file di configurazione PHP (php.ini) consente di modificare i parametri delle sessioni, come il tempo massimo di durata.
- Esempio:
-
session.gc_maxlifetime = 1440
(imposta la durata massima della sessione a 1440 secondi)
-
- Esempio:
- Il file di configurazione PHP (php.ini) consente di modificare i parametri delle sessioni, come il tempo massimo di durata.
Sicurezza delle Sessioni
-
Secure e HttpOnly:
- La proprietà Secure assicura che i cookie della sessione siano inviati solo tramite connessioni HTTPS.
- La proprietà HttpOnly impedisce che i cookie della sessione siano accessibili tramite script client-side.
-
Esempio di configurazione sicura:
-
ini_set('session.cookie_secure', 1);
-
ini_set('session.cookie_httponly', 1);
-
Chiusura e Cancellazione Sicura delle Sessioni
- La funzione
session_write_close()
chiude una sessione salvando i dati sulla sessione, ma non li cancella definitivamente. - Questa funzione è utile per prevenire conflitti di accesso simultaneo alle sessioni, evitando che diverse pagine modifichino le stesse informazioni in modo inconsistente.
Gestione Robusta delle Sessioni
- La funzione
session_status()
controlla lo stato della sessione e può essere utilizzata per iniziare una nuova sessione consession_start()
se necessario. - È possibile incrementare una variabile di sessione (ad esempio
$_SESSION['in_page']
) ogni volta che l'utente visualizza una nuova pagina per tenere traccia del numero di pagine visitate.
Distruzione Completa di una Sessione
- Per una cancellazione completa dei dati di sessione, è necessario:
- Eliminare i dati della sessione dal server utilizzando
session_destroy()
. - Azzerare l'array
$_SESSION
per rimuovere i dati dalla memoria. - Rimuovere il cookie della sessione utilizzando
setcookie()
con un timestamp scaduto.
- Eliminare i dati della sessione dal server utilizzando
Gestione dell'Identificativo di Sessione
- La funzione
session_id()
consente di accedere e modificare il ID di sessione. -
session_regenerate_id(true)
genera un nuovo ID di sessione in modo sicuro ed elimina il vecchio ID.
Timeout della Sessione
- È possibile assegnare un timeout alla sessione impostando una variabile di sessione
expire_time
con un timestamp futuro. - Se il tempo corrente supera il
expire_time
, è necessario rimuovere le variabili della sessione consession_unset()
e distruggere la sessione consession_destroy()
.
Parametri di Configurazione
- La funzione
session_get_cookie_params()
restituisce i parametri di configurazione correnti per i cookie di sessione. - I parametri ottenuti possono essere utilizzati per impostare un nuovo cookie con
setcookie()
quando si cancella una sessione.
Cancellazione Completa della Sessione e Timeout Manuale
- Un esempio completo di cancellazione completa della sessione include:
- Azzerare l'array
$_SESSION
. - Utilizzare
session_get_cookie_params()
per ottenere i parametri del cookie. - Impostare un nuovo cookie con un timestamp scaduto.
- Distruggere la sessione sul server con
session_destroy()
.
- Azzerare l'array
Etag
- L’ETag è un header HTTP che identifica una risorsa.
- Consente al client di richiedere una risorsa solo se diversa da quella già acquisita.
- Esistono due tipi di ETag: strong e weak.
- Strong indica una corrispondenza esatta della risorsa, bit per bit.
- Weak indica una corrispondenza funzionale, anche se non identica.
Header HTTP per la specificazione dei formati
- Esistono header HTTP che permettono di indicare al server i formati supportati dal client.
- Accept: specifica il tipo di formato (es. image/png).
- Accept-Charset: specifica il set di caratteri.
- Accept-Encoding: specifica i metodi di compressione supportati.
- Accept-Language: indica le lingue preferite per il contenuto.
- I valori degli header possono essere associati a un parametro di qualità q che indica la preferenza (da 1.0 per la più desiderata).
Altri header HTTP
- Authorization: fornisce le credenziali necessarie per accedere a una risorsa riservata.
- Expect: estende le funzionalità; il valore implementato è 100-continue, usato per chiedere conferma al server prima di inviare un body di grandi dimensioni.
- From: header opzionale che contiene un indirizzo e-mail per contattare l'amministratore del client.
- Host: header obbligatorio in HTTP 1.1, specifica l'host della richiesta. È essenziale per gestire più siti su un singolo server.
Header condizionali
- Gli header condizionali permettono di gestire l'efficienza delle richieste in base allo stato della risorsa.
- If-Match: esegue l'operazione solo se la risorsa corrisponde a uno degli ETag specificati.
- If-None-Match: esegue l'operazione solo se la risorsa non corrisponde a nessuno degli ETag specificati.
- If-Modified-Since: richiede la risorsa solo se è stata modificata dopo una data specifica.
- If-Unmodified-Since: richiede la risorsa solo se non è stata modificata dopo una data specifica.
- If-Range: permette di richiedere solo una parte della risorsa se non è stata modificata.
Header HTTP
- If-Unmodified-Since evita la sovrascrittura di modifiche di altri utenti se un file è stato modificato da quando l'ultimo accesso
- Max-Forwards limita il numero di "hop" che un messaggio HTTP può ottenere, utile per evitare cicli infiniti di inoltro nei nodi intermediari
-
Proxy-Authorization autentica il client direttamente verso il proxy, inviando credenziali (username e password)
- Authorization autentica il client direttamente verso il server originario
- Range richiede specifiche porzioni di una risorsa, ad esempio un range di byte
- Referer indica la pagina di provenienza della richiesta HTTP, utile ad esempio nei form
-
TE (Transfer Encoding) indica le codifiche di trasmissione supportate dal client (es: compressione, chunked..)
- È possibile associare un parametro di qualità (q) per indicare le preferenze di codifica
- User-Agent identifica il software client (spesso un browser)
Response Header
-
Accept-Ranges indica se il server supporta la risposta in intervalli di byte
- bytes: supportato
- none: non supportato
- Age indica l’età di una risorsa in cache, utile per sapere quanto tempo è trascorso dall’ultima volta che la risorsa è stata acquisita o aggiornata
-
Location reindirizza il client verso una nuova risorsa
- spesso utilizzato per passaggi a HTTPS o per pagine spostate
-
Retry-After indica il tempo dopo il quale una risorsa sarà di nuovo disponibile
- in secondi
- con una data HTTP
- Server descrive il software che implementa il server HTTP
-
Vary indica quali altri header influenzano la cache della risposta
- l'intermediario sa che una risorsa varia in base a Accept-Language, tiene conto di questo header per servire risposte diverse in base alla lingua richiesta
Evoluzione del Caching in HTTP
- In HTTP 1.0, la direttiva
Pragma
era utilizzata per controllare la cache. - In HTTP 1.1, la direttiva
Cache-Control
offre un controllo più raffinato del caching, introducendo diverse opzioni per gestire le risorse memorizzate nella cache.
Autenticazione in HTTP 1.1
- L'header
WWW-Authenticate
è utilizzato per richiedere l'autenticazione al client. - Il server di origine invia una "sfida" al client utilizzando l'header
WWW-Authenticate
. - Il client risponde con l'header
Authorization
inviando le sue credenziali di autenticazione.
Connessioni Persistenti in HTTP 1.1
- HTTP 1.1 supporta le connessioni persistenti che consentono di mantenere la connessione aperta per più richieste.
- L'header
Connection: close
può essere utilizzato per chiudere la connessione TCP dopo la trasmissione di una risorsa.
Header HTTP 1.1
-
Date
: indica la data di creazione del messaggio HTTP -
Pragma
: mantenuto per compatibilità con HTTP 1.0, sostituito daCache-Control
in HTTP 1.1.
Gestione della Cache in HTTP 1.1
- La gestione della cache può essere specificata sia nelle richieste che nelle risposte.
- L'header
Cache-Control
offre diverse direttive per gestire la cache:-
no-cache
: il client richiede un aggiornamento diretto dal server. -
no-store
: la richiesta e la risposta non devono essere memorizzate. -
max-age
: il client richiede risorse non più vecchie di un intervallo di tempo specificato. -
max-stale
: il client accetta risorse scadute, entro un intervallo di tempo specificato. -
min-fresh
: il client richiede risorse valide per un periodo di tempo specificato. -
no-transform
: impedisce ai proxy di alterare la risorsa durante la memorizzazione o la trasmissione.
-
- L'header
Age
: indica il tempo trascorso da quando una risorsa è stata inserita nella cache. -
Public
: consente la memorizzazione nella cache pubblica. -
Private
: limita la cache a memorie private. -
no-cache
: indica quali header non devono essere memorizzati nella cache. -
no-store
: evita la memorizzazione della risorsa su disco.
Altri Header HTTP Significativi
-
Location
: utilizzato per reindirizzare il client, ad esempio da HTTP a HTTPS. -
Retry-After
: indica quando il client può riprovare ad accedere a una risorsa non disponibile. -
Server
: identifica il software utilizzato dal server HTTP. -
Vary
: indica quali header della richiesta influenzano il contenuto della risposta, aiutando i proxy a determinare la validità della risorsa nella cache. -
proxy-revalidate
: obbliga i proxy a rivalidare la risorsa scaduta con il server di origine.
Gestione della Cache
- Age: Indica quanto tempo una risorsa è stata memorizzata nella cache.
- Max-Age: Determina per quanto tempo una risorsa è considerata valida, a partire dal momento in cui è stata ricevuta. Specifica il tempo di scadenza in secondi.
- Expires: Indica una data di scadenza assoluta per una risorsa, meno prioritaria di Max-Age in HTTP 1.1.
- s-maxage: Specifica il tempo di scadenza per le cache condivise, differenziandolo dalle cache private.
- Se Max-Age ed Expires sono presenti, Max-Age prevale.
Trailer, Transfer-Encoding e altre Codifiche
- Trailer: Informa il destinatario che alcuni header arriveranno dopo il corpo del messaggio, utile per messaggi di grandi dimensioni.
- Transfer-Encoding: Indica il metodo di codifica utilizzato per il corpo del messaggio, inviato prima del corpo.
- Chunked: Metodo di codifica predefinito per Transfer-Encoding.
- Upgrade: Permette di richiedere un aggiornamento del protocollo HTTP o a un protocollo diverso.
Via e Warning
- Via: Tieni traccia dei nodi intermedi attraversati da una richiesta HTTP, aggiungendo informazioni come il nome del server.
- Warning: Fornisce informazioni aggiuntive, come avvisi di scadenza o problemi di accesso al server.
- Codice warning 110: Segnala che la risorsa potrebbe non essere aggiornata.
Content-MD5
- Header utilizzato per verificare l'integrità di un messaggio.
- Contiene un digest MD5 del messaggio, calcolato dal mittente.
- Il destinatario ricalcola il digest e verifica se corrisponde.
- Protegge da errori casuali di trasmissione, ma non da manipolazioni intenzionali.
Range e Content-Range
- Content-Range: Indica un intervallo di byte specifico all'interno di una risorsa, utile per trasmettere solo una porzione di un contenuto.
- Range: Permette di richiedere porzioni specifiche di una risorsa.
Last-Modified e Status Codes
- Last-Modified: Indica la data dell'ultima modifica di una risorsa, utile per il controllo della cache.
- 200 OK: La richiesta è stata completata correttamente.
- 206 Partial Content: Viene inviato solo una parte del contenuto, come richiesto tramite l'header Range.
- 304 Not Modified: La risorsa richiesta non è stata modificata, può essere recuperata dalla cache.
- 404 Not Found: La risorsa richiesta non è disponibile sul server.
Accesso al database con PHP
- PHP offre un supporto nativo per vari database, sia open source che proprietari, tra cui MySQL, Oracle, PostgreSQL, Microsoft SQL.
- Le API (Application Program Interface) specifiche per ogni tipo di database permettono l'accesso, la gestione e la manipolazione dei dati.
- Esistono due modi principali per accedere ai database da PHP:
- Accesso diretto alle API specifiche del database (es: mysqli per MySQL).
- PDO (PHP Data Objects) - un'interfaccia generica orientata agli oggetti che permette l'accesso a vari database attraverso un livello di astrazione superiore.
- Utilizzare PDO significa poter cambiare il database sottostante senza dover modificare il codice.
- Il vantaggio di usare PDO è la portabilità del codice tra diversi database.
- Un accesso diretto tramite API specifiche garantisce un'efficienza maggiore poiché ha meno strati di astrazione.
Connessione al database MySQL con mysqli
- La funzione
mysqli_connect()
permette di connettersi a un database MySQL in PHP specificando parametri come: server, username, password, nome del database, porta e socket. - La variabile
$connessione
mantiene il riferimento alla connessione e dovrà essere utilizzata in tutte le operazioni sul database. - Se
mysqli_connect()
restituisce null, c'è stato un errore di connessione.
Gestione degli errori di connessione
-
mysqli_connect_errno()
restituisce il codice numerico dell'errore. -
mysqli_connect_error()
restituisce una stringa con il messaggio di errore.
Esecuzione di query SQL
- Le query SQL (SELECT, INSERT, UPDATE, DELETE) vengono inviate attraverso funzioni PHP che accettano la connessione come parametro.
- Esempio:
$result = mysqli_query($connessione, "SELECT * FROM utenti WHERE età > 18");
Result Set
- Il result set è il risultato di una query SQL SELECT e permette di scorrere riga per riga i dati ottenuti.
Utilizzo di Prepared Statements per sicurezza ed efficienza
- I prepared statements sono supportati da mysqli and PDO.
- Migliorano l'efficienza: il database prepara e ottimizza la query una sola volta, i parametri vengono passati solo al momento dell'esecuzione.
- Migliorano la sicurezza: impediscono l'SQL Injection, i parametri vengono passati in modo sicuro e separato dalla query SQL.
Tipi di errori: errori di debug e messaggi per l'utente finale
- Errori di debug: informazioni tecniche utili per lo sviluppatore durante la fase di sviluppo (es.,
mysqli_connect_error()
). - Messaggi per l'utente finale: messaggi comprensibili per l'utente, che indicano azioni da compiere per risolvere il problema.
- In produzione, solo gli errori rilevanti per l'esperienza utente dovrebbero essere mostrati all'utente finale, mentre i messaggi di debug dovrebbero essere registrati nei log di sistema per riferimento interno.
Connessione MySQL e Gestione degli Errori
- È fondamentale chiudere la connessione con
mysqli_close()
dopo aver completato le operazioni nel database. - La connessione non sarà più disponibile dopo la chiusura, e qualsiasi tentativo di utilizzo restituirà un errore.
- La porta predefinita per MySQL è 3306.
- Se la connessione al database fallisce, è possibile utilizzare
mysqli_connect_error()
per ottenere informazioni dettagliate sull'errore. - La gestione degli errori dovrebbe essere implementata sia per il debug che per l'utente finale.
Preparazione delle Query SQL
- Le query SQL seguono quattro fasi: preparazione, esecuzione, estrazione dei dati e formattazione.
- La preparazione comporta la creazione della query, potenzialmente con input utente.
- L'esecuzione invia la query al database.
- L'estrazione dei dati organizza i risultati di una query
SELECT
in un set di risultati. - La formattazione presenta i dati in un modo leggibile, come una tabella HTML.
- Le query possono includere variabili PHP, ma è importante usare apici singoli per le stringhe SQL e doppi apici per le stringhe PHP per evitare errori di interpretazione.
Esecuzione delle Query
-
mysqli_query()
esegue una query SQL, prendendo come argomenti la connessione e la query. - Un set di risultati è restituito per le query
SELECT
, mentre le queryUPDATE
eDELETE
non restituiscono risultati.
Gestione dei Risultati e Chiusura del Set di Risultati
-
mysqli_fetch_assoc()
estrae i dati dal set di risultati riga per riga. -
mysqli_free_result()
rilascia le risorse associate a un set di risultati. - Chiudere la connessione con
mysqli_close()
dopo aver completato le operazioni è essenziale per liberare le risorse.
Esempio Completo di Query con Controllo Degli Errori
- Un esempio completo dimostra come estrarre tutti i campi da una tabella, gestire gli errori e rilasciare le risorse correttamente.
- Il codice gestisce gli errori con
mysqli_error()
, mostra i dati e quindi chiude la connessione e il set di risultati.
Funzione mysqli_fetch_assoc()
- La funzione
mysqli_fetch_assoc()
consente di ottenere i dati di una riga di un result set come array associativo. - Ogni chiave dell'array corrisponde al nome della colonna nel database.
-
mysqli_fetch_assoc()
restituiscenull
quando non ci sono più righe da recuperare. - È possibile scorrere il result set usando un ciclo
while
e utilizzaremysqli_fetch_assoc()
per ottenere ogni riga.
Ciclo while per l'iterazione del result set
- Un ciclo
while
può essere utilizzato per scorrere il result set. - In ogni iterazione,
mysqli_fetch_assoc()
restituisce una riga del result set. - Il codice all'interno del ciclo può accedere ai dati di ogni riga usando le chiavi dell'array restituito da
mysqli_fetch_assoc()
.
Utilizzo di mysqli_num_rows() per determinare il numero di righe
- La funzione
mysqli_num_rows()
può essere usata per ottenere il numero totale di righe presenti in un result set. - Questo valore può essere utilizzato per determinare il numero di iterazioni da eseguire in un ciclo
for
.
Prepared Statements
- I prepared statements sono un metodo più sicuro per eseguire query SQL.
- Prevengono le SQL Injection.
- Si creano con
mysqli_prepare()
, passando la connessione e una query che può contenere segnaposto (?
) per i valori dinamici. - Con
mysqli_stmt_bind_param()
, si associano i segnaposto a variabili specifiche, definendone il tipo (i per integer, d per double, s per string, b per blob). - Si esegue il prepared statement con
mysqli_stmt_execute()
. - Si utilizzano
mysqli_stmt_bind_result()
emysqli_stmt_fetch()
per ottenere i risultati in uscita. - È importante chiudere il prepared statement con
mysqli_stmt_close()
dopo averlo utilizzato.
Esempio completo di utilizzo dei Prepared Statements
- È possibile utilizzare un ciclo
foreach
per eseguire la stessa query con diversi valori. - In ogni iterazione,
mysqli_stmt_bind_param()
associa il valore corrente al segnaposto nella query. -
mysqli_stmt_execute()
esegue la query. -
mysqli_stmt_bind_result()
associa le colonne del risultato a variabili. -
mysqli_stmt_fetch()
ottiene le righe del risultato. - Il codice può quindi accedere ai risultati utilizzando le variabili associate alle colonne.
Funzione mysqli_fetch_assoc()
- La funzione
mysqli_fetch_assoc()
restituisce una riga del result set in un array associativo. - Le chiavi dell'array corrispondono ai nomi delle colonne del result set.
- La funzione restituisce
null
quando non ci sono più righe nel result set.
Esempio di utilizzo di mysqli_fetch_assoc()
- Il codice PHP mostrato nell'articolo illustra come iterare tramite un result set utilizzando un ciclo
while
:-
while ($row = mysqli_fetch_assoc($result)) { ... }
- All'interno del ciclo, la variabile
$row
contiene un array associativo che rappresenta la riga corrente del result set. - I dati possono essere accessibili tramite le chiavi dell'array, ad esempio:
$row['id']
,$row['name']
.
-
Prepared statements
- I prepared statements sono un metodo sicuro e robusto per eseguire query SQL.
- Evitano il rischio di SQL injection.
- Si creano mediante la funzione
mysqli_prepare()
, che accetta la connessione e la query SQL. - I valori dinamici vengono rappresentati da segnaposto ("?") nella query.
Associazione di parametri con mysqli_stmt_bind_param()
- La funzione
mysqli_stmt_bind_param()
associa i segnaposto ai valori dinamici delle variabili. - I tipi di dati devono essere specificati per ogni variabile (ad esempio, "i" per intero, "d" per double, "s" per stringa, "b" per blob).
Esecuzione dei prepared statements
- La funzione
mysqli_stmt_execute()
esegue il prepared statement. - La funzione
mysqli_stmt_bind_result()
associa le colonne del result set a variabili. - La funzione
mysqli_stmt_fetch()
itera sui risultati del result set.
Esempio completo di utilizzo dei prepared statements
- L'articolo fornisce un esempio completo di come utilizzare i prepared statements per recuperare i dati di più utenti, in base ai loro numeri di matricola.
- Il codice itera su un array di matricole e esegue la query per ogni matricola.
- I risultati vengono stampati con i corrispondenti numeri di matricola e cognomi.
- Il prepared statement viene chiuso con
mysqli_stmt_close()
. - La connessione al database viene chiusa con
mysqli_close()
.
Vantaggi dell'utilizzo dei prepared statements
- Maggiore sicurezza, poiché i dati degli utenti non possono alterare la struttura della query.
- Migliore performance, grazie alla compilazione della query solo una volta e alla sua riutilizzabilità.
- Codice più leggibile e manutenibile, grazie alla separazione della query dai valori dinamici.
Accesso ai Database tramite Strumenti Visuali
- Un’interfaccia utente amichevole e visiva può semplificare la gestione del database.
- PHPMyAdmin è una popolare interfaccia web per MySQL, disponibile tramite browser.
Utilità di un Database Management System (DBMS)
- I DBMS sono essenziali per la gestione di grandi quantità di dati complessi.
- I DBMS sono necessari quando la quantità di dati è consistente, i dati sono multidimensionali, si richiede accesso da più utenti e si necessita di garantire l'integrità dei dati.
- I DBMS permettono di mantenere i dati integri e organizzati, anche durante operazioni di accesso e modifiche.
Tipologie di Database e SQL
- I database relazionali sono il modello prevalente, organizzando i dati in tabelle e relazioni accessibili tramite SQL.
- I database NoSQL sono progettati per dati non strutturati o multimodali, come i contenuti multimediali.
Database MySQL e MariaDB
- MySQL è un sistema di gestione di database open-source che ha adottato anche modelli con licenze a pagamento.
- MariaDB è una versione completamente open-source derivata da MySQL, con lo stesso livello funzionale.
- Entrambi i sistemi utilizzano SQL per la gestione e la manipolazione dei dati in strutture relazionali.
Strumenti di Interfaccia per Database e PHPMyAdmin
- MySQL fornisce un server che accetta connessioni TCP/IP, consentendo l'accesso remoto.
- Esiste un client a linea di comando per inviare query SQL direttamente.
- PHPMyAdmin è un'interfaccia web che semplifica l'interazione con MySQL tramite comandi visuali.
- PHPMyAdmin offre anche la possibilità di scrivere comandi SQL diretti.
Accesso a PHPMyAdmin nell'ambiente fornito
- PHPMyAdmin è accessibile tramite l'URL: https://195...io/[vostra_matricola]/phpmyadmin
- Le credenziali per l'accesso sono:
- Username: admin
- Password: la stessa password utilizzata per accedere al server.
Documentazione e Supporto per PHPMyAdmin
- PHPMyAdmin è ben documentato, con manuali disponibili online e forum di discussione.
- Sono disponibili licenze commerciali per chi ha necessità di supporto avanzato.
Requisiti per PHPMyAdmin
- PHPMyAdmin richiede un server web e una versione moderna di PHP (≥ 7.1.3) con supporto per le sessioni, JSON e funzionalità moderne.
- Sono inoltre necessarie funzionalità opzionali come le estensioni per la compressione dei file (ZIP) e il supporto per UTF-8.
Database supportati
- PHPMyAdmin è compatibile con MySQL e MariaDB, oltre che con altri database con un'interfaccia simile a MySQL-I.
- Supporta attualmente MySQL dalla versione 5.5 e versioni compatibili di MariaDB.
Requisiti per il client
- È necessario un browser con JavaScript e cookie abilitati per utilizzare PHPMyAdmin correttamente.
- Disabilitando JavaScript, verrà visualizzata solo una pagina bianca, dato che PHPMyAdmin si basa fortemente su JavaScript e cookie per tracciare le sessioni e le azioni dell'utente.
Funzionalità principali di PHPMyAdmin
- Permette di eseguire tutte le principali operazioni su un database: creazione, modifica, navigazione ed eliminazione.
- Consente l'importazione ed esportazione dei dati in vari formati come SQL, XML, Open Document, CSV e altri.
- Le operazioni possono essere eseguite su database e tabelle.
- Include la possibilità di creare tabelle, definire campi, aggiungere valori e interrogazioni (sia visuali che tramite query SQL).
- Supporta la gestione utenti con definizione di utenti con privilegi specifici, restrizioni e permessi in base al tipo di operazione e tabella.
- Offre funzionalità avanzate come trigger e stored procedure per migliorare l'efficienza e la sicurezza.
Interfaccia di PHPMyAdmin
- Presenta una barra superiore con il menu principale con le proprietà principali.
- Ha una colonna sinistra che elenca i database disponibili.
- Una colonna destra fornisce informazioni sul server di database, sul web server e su PHPMyAdmin, con documentazione aggiuntiva accessibile.
Creazione di un database
- Selezionare l'opzione "Database" dal menu principale e inserire un nome significativo e un character set.
- Dopo la creazione, è possibile creare tabelle selezionando "Create Table", assegnando un nome alla tabella e specificando il numero di colonne.
- Definire il tipo di dato per ciascun campo, la lunghezza e un valore predefinito, se necessario.
Gestione utenti e sicurezza
- Permette di configurare gli utenti e i loro privilegi.
- Gli utenti possono essere limitati a specifici indirizzi IP o a localhost (127.0.0.1) per consentire l'accesso solo da connessioni locali.
- È possibile creare nuovi utenti specificando le credenziali (username e password), l'accesso (da dove possono connettersi) e i permessi (livelli di accesso su database e tabelle specifiche).
- Un utente configurato solo per SELECT può leggere i dati ma non modificarli.
- Un utente configurato per INSERT e UPDATE può solo aggiungere o modificare i dati, senza leggere i valori preesistenti.
Funzionalità e Permessi Utente in PHPMyAdmin
-
Oltre alle autorizzazioni basilari (SELECT, INSERT, UPDATE), PHPMyAdmin consente di configurare permessi più avanzati:
- DELETE: per eliminare record
- ALTER: per modificare strutture esistenti (tabelle, indici, istruzioni, database, viste)
- TRIGGER: per definire trigger che eseguono azioni in risposta a eventi specifici
-
Un utente può essere configurato per eseguire operazioni di gestione a livello di server:
- Shutdown: arrestare il server
- Visualizzazione: vedere tutti i database o solo quelli autorizzati
- Delegare privilegi: creare nuovi utenti con lo stesso livello di privilegio o assegnare autorizzazioni
-
È possibile limitare le performance associate a un utente:
- Numero massimo di query/aggiornamenti all'ora
- Numero massimo di connessioni orarie
- Queste limitazioni aiutano a evitare che un singolo utente consumi eccessive risorse di sistema.
Scrittura di Query SQL in PHPMyAdmin
- PHPMyAdmin consente di eseguire query SQL dirette, anche complesse.
- Basta scrivere la query nell'area di testo e premere "Go".
- PHPMyAdmin visualizza i risultati in modo chiaro e organizzato.
Esportazione e Importazione di Database
-
Esportazione:
- Quick: esportazione rapida di tutti i database senza configurazioni specifiche
- Custom: selezione di specifici database e opzioni di esportazione
- Formato standard di esportazione: SQL.
-
Importazione:
- Selezionare il file da caricare
- Indicare la codifica del file (es. UTF-8)
- Avviare l'operazione
- Dopo una riuscita importazione, il database sarà immediatamente visibile e utilizzabile.
Accedere a PHPMyAdmin
-
Accedere a PHPMyAdmin nel proprio ambiente:
-
Digitare nella barra degli indirizzi:
https://[nome-server]/[matricola]/phpmyadmin
-
Credenziali iniziali:
admin
(username) e la password dell'ambiente di sviluppo
-
Digitare nella barra degli indirizzi:
Connessione a MySQL in PHP
-
Per connettersi a un database MySQL tramite PHP, è necessario specificare:
- Nome o IP del server database
- Parametri come utente e password
-
L'IP del database è disponibile in
$_SERVER['SERVER_ADDR']
all'interno di PHP.
- L'indirizzo IP potrebbe variare, ad esempio, per manutenzione del server.
- Se l'IP cambia, è necessario aggiornare il parametro di connessione.
Introduzione alle Architetture Software
- Un'architettura software organizza moduli o componenti, ciascuno con una funzione specifica, e un meccanismo di comunicazione tra essi.
- Questa organizzazione facilita la costruzione, la comprensione e la gestione di strutture complesse.
- Le componenti comunicano tramite protocolli (es. TCP), chiamate di funzione o Inter-Process Communication (IPC).
- Le architetture software sono logiche: anche componenti su un unico nodo possono avere un'architettura complessa e stratificata.
Esempio: Architettura Layered
-
Un'architettura stratificata prevede diversi livelli con responsabilità specifiche:
- Presentazione: gestione dell'interfaccia utente
- Logica applicativa: elaborazione e calcolo dei risultati
- Accesso ai dati: gestione e accesso alle informazioni di base
- Questa struttura modulare favorisce la manutenibilità e il riuso del codice.
Modularità e Architetture Software
- Un'eccessiva modularità può portare a un numero elevato di interazioni tra moduli, il che può essere problematico se il costo delle comunicazioni è alto (ad esempio, in una rete distribuita dove i moduli si trovano su nodi diversi).
- Non tutte le problematiche si prestano a una struttura layered; in alcuni casi, l'interazione tra livelli può causare sovrapposizioni che rendono difficile l'ottimizzazione del sistema.
Architetture a Microservizi
- Un'architettura a microservizi si basa su piccoli servizi autonomi che realizzano funzioni specifiche e riutilizzabili.
- Ogni servizio è indipendente e comunica tramite API (Application Programming Interface) utilizzando un formato di dati standard.
- Esempio: un sito di e-commerce può utilizzare microservizi per gestire gli ordini, il catalogo prodotti e il carrello acquisti.
- I microservizi permettono uno sviluppo modulare e rapido, e il riutilizzo di un servizio in contesti diversi.
Sfide dei Microservizi
- Le architetture a microservizi comportano una complessità di gestione, mitigata da strumenti come gli orchestratori di servizi.
- La grande quantità di comunicazioni tra i microservizi può influire sulle prestazioni complessive del sistema.
Architetture Orientate alla Rete
- Le architetture orientate alla rete sono progettate per supportare applicazioni distribuite che comunicano tramite protocolli specifici.
- I nodi in queste architetture possono assumere ruoli diversi, come client, server o intermediari.
Architettura Client-Server
- L'architettura client-server è ampiamente diffusa, dove il client richiede un servizio e il server lo fornisce.
- Esempi tipici sono i server web che rispondono alle richieste HTTP dei browser (client).
- È un modello versatile adattabile a diversi contesti, come il web, l'hardware e i servizi distribuiti.
Il Server: Sempre in Ascolto
- Il server è un'entità che rimane in attesa di richieste, connessa a una porta predeterminata (ad esempio, porta 80 per HTTP).
- È configurato per ricevere richieste su una porta specifica, che può essere TCP o UDP.
- Dopo aver risposto a una richiesta, il server rimane attivo per fornire continuamente il servizio.
Il Client: Interfaccia Utente e Comunicazione
- Il client interpreta le azioni dell'utente e genera una comunicazione adatta per il server utilizzando un protocollo compatibile (es. HTTP).
- Invia la richiesta al server e attende la risposta.
- In molti casi, il client termina l'esecuzione dopo aver ricevuto la risposta, fungendo da interprete e intermediario tra l'utente e il sistema.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Questo quiz esplora i limiti di HTTP 1.0 e le problematiche legate alla gestione delle pagine dinamiche. Si discuterà come l'HTTP 1.1 abbia risposto a queste sfide con miglioramenti significativi, come connessioni persistenti e pipelining. Testa le tue conoscenze su questi protocolli fondamentali per il web!