Intestazioni di informazioni immense. Cosa sono le intestazioni HTTP? Teoria generale. Descrizione di un problema particolare

Oggi abbiamo deciso di parlare di cosa significa un messaggio "Attenzione: impossibile modificare le informazioni sull'intestazione - intestazioni già inviate da (output avviato in /home/...", che appare nella pagina di un sito invece che nel suo contenuto principale.
Come si è scoperto, su Internet è stato scritto abbastanza su questo argomento, ma non ci sono istruzioni generalizzate su cosa significhi tutto ciò e su come liberarsene.
Abbiamo deciso di aggiungere qualche goccia all'enorme mare di informazioni su questo argomento, poiché abbiamo riscontrato personalmente questo problema.

Qualche tempo fa abbiamo trasferito diversi siti clienti da un hosting all'altro.
Tutto è andato bene, i siti erano accessibili, ma quando ho provato ad accedere all'amministratore. pannello, dopo aver inserito login e password, al posto del pannello di controllo è apparsa una pagina bianca.
Abbiamo controllato su altri siti: la stessa cosa.
Per scoprirlo possibili ragioni, abbiamo abilitato la visualizzazione degli errori.
Per fare ciò è necessario modificare tramite FTP il file .htaccess che si trova nella root del sito, aggiungendovi la riga:

Php_flag display_errors attivo

Successivamente, quando si accedeva al pannello di amministrazione, apparivano diversi messaggi come "Avviso: impossibile modificare le informazioni sull'intestazione - intestazioni già inviate da (output avviato su /home/.../functions.php:1552) in /home/.../ public_html /wp-login.php sulla linea 362”, ecc.

Come risultato della ricerca, è stata trovata l'informazione che questo messaggio avvisa che le informazioni sull'intestazione non possono essere modificate, perché le intestazioni (informazioni su di esse) erano già state inviate in precedenza e quindi tra parentesi è stato indicato quali righe in quali file ciò è stato fatto .


Intestazioni (Intestazioni) sono informazioni di servizio del server su cui si trova il sito. Prima che il browser visualizzi il contenuto del sito, riceve intestazioni dal server, che indicano vari dati: se è abilitata la memorizzazione nella cache della pagina, la sua codifica, il tipo di contenuto della pagina e altro. Nei sistemi di gestione del contenuto del sito, le intestazioni vengono generate dalle funzioni che si trovano in vari file sistemi.
Condizione richiesta- le intestazioni devono essere inviate prima del contenuto principale (contenuto) della pagina.


Se il contenuto del sito viene trasmesso prima delle intestazioni, si verifica una situazione in cui ci avverte il messaggio "Avviso: impossibile modificare le informazioni dell'intestazione - intestazioni già inviate da...".

In quali situazioni ciò potrebbe verificarsi? Come già accennato, nei moderni CMS gli header sono il risultato di una o più funzioni. La funzione stessa è un certo frammento di codice racchiuso tra l'iniziale e finale ?> tag.

Tutto ciò che è al di fuori di questi tag è considerato contenuto della pagina.
Pertanto, se all'inizio della pagina ci sono funzioni, il cui risultato sono le intestazioni inviate, e riceviamo il messaggio "Attenzione: impossibile modificare le informazioni sull'intestazione...", risulta che alcune informazioni relative al contenuto di la pagina viene inviata dal server prima delle intestazioni.

Quali sono queste informazioni e come trovarle. Molto spesso si tratta di spazi e linee vuote.

Uno spazio o una riga vuota vengono interpretati come caratteri nel contenuto principale della pagina, quindi risulta che parte del contenuto principale viene prima delle intestazioni e viene prima inviato al browser.

È necessario scaricare i file specificati nei messaggi "Avvertenza: impossibile modificare le informazioni dell'intestazione..." su computer locale, aprilo in un editor di codice (io uso NotePad++) e controlla attentamente la presenza di righe e spazi vuoti:

Tuttavia, esiste una caratteristica importante che può aumentare significativamente il tempo necessario per trovare una soluzione.
Il file potrebbe non contenere righe o spazi vuoti, ma se è stato salvato con la codifica UTF-8, l'editor in cui è stato creato il file potrebbe inserire un carattere estraneo all'inizio del documento. Questo carattere è un identificatore UTF-8 uguale a uno spazio di larghezza zero, che potrebbe non essere visualizzato affatto nell'editor, ma sul server verrà percepito come contenuto principale e visualizzato prima dei titoli.

Per eliminare questo identificatore, è necessario salvare nuovamente i file scaricati nel formato UTF-8 senza distinta base(UTF-8 senza distinta base).

NotePad++ affronta perfettamente questo compito.

Dopo queste azioni e l'aggiornamento dei file sul server, il messaggio dovrebbe scomparire e il sito funzionerà normalmente.

Inserito da giovedì, 04/05/2017 - 12:55

Descrizione di un problema particolare

Dopo aver fatto clic sul pulsante, viene visualizzato un errore:

Avviso: impossibile modificare le informazioni sull'intestazione: intestazioni già inviate da (output avviato in C:\OpenServer\domains\testsite\WEB\5_phpRedirect.php:10) in C:\OpenServer\domains\testsite\WEB\5_phpRedirect.php alla riga 12

Il codice è simile a quello fornito in questo argomento:

Rete sperimentale

Seleziona lo script da scaricare

Script del gestore:

Quando succede questo?

Tipo di errore (avviso):

Avviso: impossibile modificare le informazioni sull'intestazione: intestazioni già inviate da

Si verifica se hai già fatto qualcosa che richiede l'impostazione delle intestazioni del browser e ora desideri riscriverle con nuove. Ad esempio, se hai già visualizzato del testo, php imposta le intestazioni (in particolare header Posizione-- che mostra se rimanere sulla pagina richiesta o se è necessario andare su un'altra pagina e lì ottenere una risposta alla richiesta) per mostrare al browser del client (nella sua risposta) come comportarsi.

La radice del problema

Molto probabilmente, il problema nel tuo caso è che stai già offrendo contenuti (tag html mescolati nel file con lo script) A comandi:

Intestazione eco($reindirizzamento);

Ricorda che la funzione header() può essere chiamata solo se il client nessun dato è stato ancora trasferito. Cioè, dovrebbe apparire per primo nell'output; non dovrebbero esserci tag HTML, righe vuote, ecc. prima della sua chiamata. Molto spesso, si verifica un errore quando, durante la lettura del codice con funzioni di file come include o require, ci sono spazi o righe vuote in questo codice che vengono stampate prima che venga chiamato header(). Gli stessi problemi possono sorgere quando si utilizza un singolo file PHP/HTML.

Cioè, è necessario liberare il gestore dello script da html - dopotutto, essenzialmente non emette nulla da solo, ma lo trasferisce semplicemente a un altro indirizzo - questo è il primo.

Intestazione($reindirizzamento);

Intestazione eco($reindirizzamento);

Sperimentare

Poiché echo() generalmente scrive su Corpo della risposta http, e non nelle intestazioni, e l'intestazione restituisce void (ovvero, non restituisce valori), come menzionato sopra, allora non ha senso usare echo(), ma
- tuttavia, propongo di condurre un esperimento:

  1. rimuovereHTML
  2. non rimuovere l'eco

Poiché header() viene essenzialmente chiamato prima di echo() (poiché header() è un argomento di echo()) e quindi restituisce - allo stesso tempo controlleremo se la funzione restituisce null - verrà interpretata come una stringa vuota oppure (che o meglio) echo non inizierà nemmeno a funzionare una volta che il reindirizzamento è già avvenuto.

Chiariamo ancora il motivo

Quelli. prima di chiamare header() nessun contenuto dovrebbe essere visualizzato(cosa è scritto nella descrizione della funzione: http://php.net/manual/ru/function.header...)

  • 1) nemmeno con eco
  • 2) non semplicemente scaricando testo html nel browser.

Nel nostro caso, apparentemente echo non influisce su nulla, ma l'html nel gestore lo fa davvero.

il problema è stato risolto

Su tuo consiglio sono stati rimossi Tag HTML. Ora il reindirizzamento avviene correttamente, lo script del gestore assomiglia a questo:

La funzione eco non influisce realmente sull'operazione, ad es. Potete anche lasciarlo come a S. Holzner:

Inoltre, quando si scrive il codice per un reindirizzamento, è necessario prestare attenzione all'estensione del file a cui viene effettuata la transizione: con la sintassi proposta, deve essere specificata nell'argomento dell'intestazione.

  • Accedi per pubblicare commenti

Ma puoi farlo funzionare

Ma puoi anche far funzionare il gestore precedente

Reindirizzamento dell'utente

se imposti l'opzione nel file php.ini

Buffering_output = 4096

  • Accedi per pubblicare commenti

È vietato inviare nuovamente le intestazioni, il protocollo HTTP non funziona in questo modo! Ma cosa dovremmo fare? Se, dopo aver visualizzato la pagina, hai bisogno anche di avviare una sessione e impostare un cookie? - Ricordiamoci del buffering dell'output.

Cioè, quando viene impostata una dimensione del buffer diversa da zero, finché non è piena è ancora possibile manipolare le intestazioni. Se la dimensione del buffer è zero, dopo l'output del contenuto, viene restituito immediatamente preceduto da passando le intestazioni di risposta HTTP al client.

E si scopre che vogliamo modificare le intestazioni che sono già "volate" sulla rete verso il client (il che significa che non è più possibile correggerle - in particolare l'intestazione Posizione, che indica se rimanere sulla pagina richiesta o richiederne un'altra - la risposta dello script "redirector" (per noi questo è un gestore di moduli) dice semplicemente che dobbiamo richiedere un'altra pagina), che è ciò di cui php ci avvisa .

Ma: Naturalmente è impossibile risolvere il problema in questo modo (non molto correttamente, più precisamente).

_____________
Facoltà di Matematica della VSU e altri classici =)

  • Accedi per pubblicare commenti

Comprensione delle intestazioni HTTP e dei campi di intestazione HTTP

Intestazioni HTTP fornire informazioni vitali richieste per l'invio di una transazione HTTP tramite protocollo http.

Il formato generale dell'intestazione HTTP contiene coppie nome-valore separate da due punti nel campo dell'intestazione. Ciascuna coppia nome-valore termina con una sequenza di caratteri di ritorno a capo (CR) e di avanzamento riga (LF). I campi vuoti alla fine di ciascuna intestazione indicano la fine dell'intestazione.

Il formato dell'intestazione comune seguito dalle applicazioni è simile a:

Tipi di intestazioni HTTP

Esistono quattro tipi di intestazioni dei messaggi HTTP. Sono:

  • Testata generale
  • Richiedi intestazione
  • Intestazione della risposta
  • Intestazione dell'entità

Testata generale

I campi di intestazione generale hanno un'applicabilità comune nei messaggi di richiesta e di risposta. I campi di intestazione si applicano solo al messaggio trasmesso e non si applicano all'entità trasferita.

La struttura di un'intestazione generale è simile a:

Controllo della cache Il campo specifica le direttive che devono essere seguite da ogni meccanismo di memorizzazione nella cache su un sistema di richiesta e risposta.

Connessione Il campo consente al mittente di specificare le opzioni richieste per una connessione. L'intestazione della connessione ha il seguente formato:

Data Il campo rappresenta la data e l'ora durante l'avvio del messaggio. Il formato della data specificato in HTTP è simile a:

Pragma Il campo aiuta a includere una direttiva specifica di implementazione applicabile a qualsiasi destinatario su un sistema di richiesta e risposta.

Rimorchio il valore del campo specifica se un insieme di campi di intestazione nel trailer del messaggio è codificato con codifica di trasferimento in blocchi.

Codifica di trasferimento Il campo indica se al corpo del messaggio viene applicato un tipo di trasformazione.

Aggiornamento Il campo consente ai client di specificare protocolli di comunicazione supportati aggiuntivi. Consente inoltre al server di cambiare protocollo con i protocolli aggiuntivi.

Via campo sono campi obbligatori utilizzati da proxy e gateway che indicano protocolli intermedi. Indica inoltre il destinatario della richiesta tra user-agent e server e la risposta tra server e client.

Avvertimento Il campo contiene informazioni aggiuntive sullo stato del messaggio e sulle trasformazioni del messaggio che non si riflettono nel messaggio.

Le intestazioni di avviso vengono generalmente inviate con le risposte.

Il campo dell'intestazione della richiesta consente ai client di passare inoltre le informazioni sulla richiesta e le informazioni sul client al server.

La struttura di un'intestazione di richiesta è simile a:

Accettare Il campo specifica i tipi di media accettabili per la risposta.

"*" viene utilizzato per raggruppare i tipi di media nell'intervallo

"*/*" indica tutti i tipi di supporto

"type/*" indica tutti i sottotipi di un tipo

Accetta set di caratteri il campo indica i set di caratteri accettabili. Rende i client in grado di comprendere set di caratteri per scopi speciali per segnalare al server di rappresentare il documento in questi set di caratteri.

Accetta-codifica il campo è simile ad Accetta, limita la codifica del contenuto accettabile della risposta.

Accetta lingua il campo è simile ad Accetta, limita l'insieme preferito di linguaggi naturali.

Autorizzazione Il campo è per gli agenti utente che desiderano autenticarsi con il server.

Aspettarsi Il campo indica i comportamenti del server richiesti da un client.

Da Il campo contiene l'indirizzo e-mail di un utente che controlla lo user-agent richiedente.

Ospite Il campo specifica l'host Internet e il numero di porta della risorsa richiesta dall'URI dell'utente.

Se-match Il campo viene utilizzato per creare metodi condizionali.

Se-modificato-dal Il campo viene utilizzato per creare un metodo condizionale. Se la variante richiesta non viene modificata entro il tempo specificato, l'entità non verrà restituita dal server.

Se non corrisponde Il campo consente un aggiornamento efficiente delle informazioni sulla cache con un sovraccarico minimo della transazione.

Se-Intervallo Il campo consente ai clienti di ricevere parte dell'entità mancante o, in caso contrario, i clienti possono chiedere di inviare l'intera nuova entità.

Se-non modificato-dal Il campo consente al server di eseguire l'operazione richiesta se non è stata modificata dall'ora specificata in questo campo.

Attaccanti massimi Il campo fornisce meccanismi con metodi TRACE e OPTIONS per limitare i proxy o gateway di inoltro delle richieste.

Autorizzazione proxy Il campo consente al client di identificarsi per proteggere il proxy.

Allineare Il campo specifica le entità HTTP nei messaggi HTTP rappresentati come una sequenza di byte. La richiesta di recupero HTTP richiede uno o più sottointervalli di entità utilizzando i metodi GET.

Referente Il campo consente ai client di specificare l'indirizzo URI della risorsa da cui viene trovato l'URI richiesta.

T.E. Il campo indica la codifica di trasferimento dell'estensione che può accettare nella risposta. Inoltre, indica se accetterà i campi trailer nella codifica di trasferimento di blocchi.

Agente utente Il campo contiene informazioni sullo user-agent richiedente.

Intestazione della risposta HTTP

Il campo dell'intestazione della risposta consente al server di passare informazioni aggiuntive attraverso le risposte diverse dalla semplice risposta della riga di stato.

La struttura dell'intestazione della risposta è simile a:

Intervalli di accettazione Il campo consente ai server di indicare l'accettazione delle richieste di intervallo di risorse.

Età Il campo indica al mittente il tempo approssimativo trascorso dalla risposta del server.

ETag Il campo fornisce il valore corrente del tag di entità per una richiesta.

Posizione Il campo reindirizza i destinatari a posizioni diverse da Request-URI per completare l'identificazione di una nuova risorsa.

Autenticazione proxy il campo è un'inclusione obbligatoria per la risposta dell'autenticazione proxy.

Riprova dopo Il campo viene utilizzato come risposta quando un servizio non è disponibile per indicare il periodo di tempo durante il quale il servizio rimarrà non disponibile per il cliente.

Server Il campo contiene informazioni sul software utilizzato dal server per gestire le richieste.

Variare campo indica il campo di richiesta che determina se una cache è idonea a utilizzare la risposta di una richiesta senza riconvalida della risposta.

Autenticazione WWW vengono utilizzati quando un messaggio di risposta non è autorizzato.

I campi di intestazione dell'entità definiscono metainformazioni sul corpo dell'entità o sulla risorsa richiesta. Il formato dell'intestazione dell'entità è simile a:

Permettere il campo elenca l'insieme di metodi supportati dalle risorse identificate dall'URI richiesta.

Codifica dei contenuti il campo viene utilizzato come modificatore del tipo di supporto.

Linguaggio dei contenuti Il campo descrive il linguaggio naturale per i clienti di un'entità.

Lunghezza del contenuto Il campo indica la dimensione di un'entità rappresentata in numero decimale.

Posizione del contenuto Il campo fornisce la posizione della risorsa per un'entità quando è accessibile da una posizione diversa da Requested-URI.

Contenuto-MD5 Il campo fornisce il controllo dell'integrità del messaggio (MIC) utilizzando un digest MD5 sul corpo dell'entità.

Intervallo di contenuti Il campo specifica dove deve essere applicato il corpo parziale dell'intero corpo-entità.

Tipo di contenuto Il campo indica se il tipo di supporto del corpo dell'entità viene inviato al destinatario o se viene utilizzato il metodo GET per inviare le richieste.

Scade Il campo fornisce la data/ora dopo la quale la risposta diventa obsoleta.

Ultima modifica Il campo indica la data e l'ora dell'ultima modifica della variante.

L'ordine in cui il nome del campo appare nell'intestazione al momento della ricezione non è significativo. Convenzionalmente le intestazioni generali vengono posizionate per prime, seguite dall'intestazione della richiesta o della risposta con l'intestazione dell'entità alla fine.

Avviso sul copyright: si prega di non copiare o tradurre questo articolo senza previa autorizzazione scritta da parte del sito

HTTP Debugger è un analizzatore HTTP senza proxy per sviluppatori che offre la possibilità di acquisire e analizzare intestazioni HTTP, cookie, parametri POST, contenuto HTTP e intestazioni CORS da qualsiasi browser o applicazione desktop.

Interfaccia utente fantastica e molto facile da usare. Non un proxy, nessun problema di rete!

In questo articolo vedremo a cosa servono le intestazioni, senza entrare nei dettagli su quale sia responsabile di cosa. I ruoli delle intestazioni più comuni verranno descritti negli articoli successivi.

  • Tutti gli articoli della serie:

Cosa sono le intestazioni HTTP? Teoria generale. HTTP sta per HyperText Transfer Protocol. Un protocollo è un insieme di regole in base alle quali diversi dispositivi
scambiare dati. È stato creato negli anni '90. Ora è utilizzato quasi ovunque su Internet. Tutto ciò che vedi nella finestra del tuo browser è stato ottenuto tramite questo protocollo. Le intestazioni http sono forse la cosa principale nella comunicazione tra i dispositivi. Trasmettono informazioni di base sulla connessione stabilita e sulle informazioni trasmesse attraverso questa connessione.

Diamo un'occhiata allo schema di comunicazione tra i due dispositivi. Lascia che questi dispositivi siano il tuo computer e qualche server su Internet:

Come puoi vedere, il browser ha inviato una richiesta http. Potrebbe assomigliare a questo:
GET /other-19 HTTP/1.1
Ospite: www.scriptsite.ru
Accetta: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accetta lingua: ru,en-us;q=0.7,en;q=0.3
Codifica accettata: gzip,deflate
Accetta set di caratteri: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connessione: keep-alive

In questo caso, la prima riga è la riga di richiesta, tutte le altre righe sono intestazioni http che trasportano informazioni aggiuntive sulla richiesta, sul cliente che richiede queste informazioni, su tante altre cose.
In risposta alla nostra richiesta, il server può inviare le seguenti intestazioni:

Server: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8k mod_dp20/0.99.2 PHP/5.2.5 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6 (24/09/2007)

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=ft47gokfee6amv3eda3k1p93s3; percorso=/

Controllo cache: no-store, no-cache, deve essere riconvalidato, post-controllo=0, pre-controllo=0

Pragma: nessuna cache

Keep-Alive: timeout=10, massimo=1024

Connessione: Keep-Alive

Codifica di trasferimento: in blocchi

Tipo di contenuto: testo/html

La prima riga è la riga di stato. Le righe rimanenti sono intestazioni. Il diagramma mostrava che veniva caricato anche il contenuto della pagina. Ma questo contenuto non viene generalmente visualizzato nei plug-in di visualizzazione dell'intestazione. E il contenuto della pagina è solo un caso speciale. Secondo il protocollo la pagina non deve necessariamente essere trasmessa. È invece possibile trasmettere un'immagine, un file audio e un video. E tutti avranno titoli molto diversi.

Come vedere le intestazioni http?

Per vedere le intestazioni http, consiglio i seguenti plugin per il browser Firefox:

Se usi Browser Chrome, puoi visualizzare tutte le informazioni cliccando sul pulsante impostazioni - strumenti - strumenti per sviluppatori. Scheda Reti.
Non posso dare alcun consiglio agli utenti del browser Opera, poiché non sono amico di questo browser. Una volta installati e funzionanti i plug-in, prova ad aggiornare la pagina. Vedrai immediatamente enormi elenchi di richieste e risposte attraverso le quali il tuo browser ha comunicato con il server.

Intestazioni HTTP e accesso ad esse in php

Se sei uno sviluppatore PHP, puoi accedere alle intestazioni delle richieste utilizzando la funzione getallheaders(). Per capire come funziona, eseguiamo il seguente codice:

E otteniamo una stampa dell'array di intestazione.

Ma più spesso è possibile accedervi tramite la variabile globale $_SERVER. Quasi ogni intestazione http ha un nome di elemento simile in questa variabile, formato secondo il principio HTTP_header_name. Quindi per lo stesso "User_Agent" esiste una variabile $_SERVER['HTTP_USER_AGENT'];

Per ottenere le intestazioni che il server invierà all'utente, viene utilizzata la funzione headers_list(). Di norma, il server compone le intestazioni necessarie mancanti alla fine di tutti gli script. Pertanto, questo array conterrà le intestazioni sia quelle che il server ha creato prima dell'inizio dell'esecuzione dello script (e non verranno modificate), sia quelle che impostiamo manualmente. Possono essere impostati manualmente utilizzando la funzione header("testo intestazione");
Eseguiamo il seguente codice:

Vedremo una stampa delle intestazioni pronte per essere inviate nel momento in cui viene chiamata la funzione:

La prima intestazione è stata impostata automaticamente e porta il nome del server su cui è in esecuzione lo script. Il secondo è stato installato manualmente da noi. Se il browser avesse bisogno dell'intestazione "Fruit", la prenderebbe dalla risposta http del server e la utilizzerebbe. Ma poiché il nostro browser non ne ha bisogno, ignora semplicemente la riga che non capisce.

Struttura della richiesta HTTP

La nostra richiesta è simile alla seguente:

La prima riga, come accennato in precedenza, è la riga della query. Si compone di tre parti:

  • metodo(metodo) - indica che tipo di richiesta. I metodi più comuni: GET, POST, HEAD. Di essi si parlerà nel paragrafo successivo.
  • sentiero(percorso) - solitamente è la parte dell'URL che segue il dominio. Ad esempio, se inserisci http://www.scriptsite.ru/about/ nella barra degli indirizzi, il valore del percorso sarà /about/.
  • protocollo(protocollo): il protocollo utilizzato. Solitamente è costituito da "HTTP" e dalla versione del protocollo. In genere, i browser moderni utilizzano la versione 1.1

Poi arrivano le intestazioni sotto forma di stringhe nel formato "Nome: valore".
A proposito, i dati dei cookie vengono trasmessi anche in questa richiesta come una delle intestazioni. La maggior parte di queste righe sono facoltative. La query può essere ridotta a sole due righe:

OTTIENI /article/show/4/HTTP/1.1

Ospite: scriptsite.ru

Metodi di richiesta

OTTENERE

Una richiesta get viene generalmente utilizzata per richiedere un documento e passare alcuni parametri.
Questo è il metodo principale utilizzato per ottenere pagine HTML, immagini, file CSS e JavaScript, ecc.
Dato che i parametri possono essere qualsiasi cosa e il server non ha restrizioni su come possono essere elaborati, per trasferire le informazioni viene spesso utilizzato il metodo di richiesta dati. Ad esempio, avremo un modulo come questo

In questo caso tali parametri saranno visibili nella barra degli indirizzi del browser.

INVIARE

Post è il metodo utilizzato per inviare dati al server. Sebbene sia possibile inviare dati al server utilizzando il metodo GET tramite la barra degli indirizzi del browser, nella maggior parte dei casi è preferibile utilizzare POST. L'invio di grandi quantità di dati tramite GET non è pratico. Inoltre, GET presenta alcune limitazioni che non consentono, ad esempio, di pubblicare questo articolo sul mio sito Web tramite una sola riga del browser. Richieste POST più spesso utilizzato per inviare moduli web. Modifichiamo il modulo dell'esempio precedente per dargli un metodo POST