Attributo method di HTML <form>

Definizione e uso

method L'attributo specifica come inviare i dati del modulo (i dati del modulo vengono inviati alla pagina specificata dall'attributo action).

I dati del modulo possono essere inviati come variabili dell'URL (utilizzando method="get") o come transazione HTTP POST (utilizzando method="post")

Spiegazione su GET:

  • Aggiungere i dati del modulo in forma di coppia nome/valore all'URL
  • L'URL ha una lunghezza limitata (circa 3000 caratteri)
  • Non utilizzare GET per inviare dati sensibili! (Saranno visibili nell'URL)
  • È molto utile per i moduli di invio che l'utente desidera aggiungere come segnalibro
  • GET è più adatto per dati non sicuri, come le stringhe di ricerca di Google.

Note su POST:

  • Aggiungere i dati del modulo nel corpo della richiesta HTTP (i dati non verranno visualizzati nell'URL).
  • Senza limiti di dimensione.
  • I moduli inviati con POST non possono essere aggiunti ai segnalibri.

Esempio

Esempio 1

Inviare il modulo utilizzando il metodo "get":

<form action="/action_page.php" method="get">
  <label for="fname">Nome:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Cognome:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Invia">
</form>

Prova a fare tu stesso

Esempio 2

Inviare il modulo utilizzando il metodo "post":

<form action="/action_page.php" method="post">
  <label for="fname">Nome:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Cognome:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Invia">
</form>

Prova a fare tu stesso

Sintassi

<form method="get|post">

Valore dell'attributo

Valore Descrizione
get Predefinito. Aggiungere i dati del modulo in forma di coppia nome/valore all'URL: URL?nome=valore&nome=valore.
post Inviare i dati del modulo come transazione HTTP POST

Dettagli sull'attributo method

Il browser trasmette i dati nel modulo al server per l'elaborazione utilizzando il metodo impostato dall'attributo method. Ci sono due metodi: POST e GET.

Se viene utilizzato il metodo POST, il browser invierà i dati seguendo due passaggi. Prima di tutto, il browser stabilirà una connessione con il server di elaborazione del modulo specificato dall'attributo action, una volta stabilita la connessione, il browser invierà i dati al server utilizzando il metodo di trasmissione a segmenti.

Sul lato del server, una volta che l'applicazione di tipo POST inizia a eseguire, i parametri devono essere letti da una posizione di segnalazione e, una volta letti, devono essere decodificati prima che l'applicazione possa utilizzare questi valori di modulo. Il server specifico dell'utente indica chiaramente come l'applicazione deve accettare questi parametri.

In un altro caso, viene utilizzato il metodo GET, in questo caso il browser stabilisce una connessione con il server di elaborazione del modulo, quindi invia tutti i dati del modulo in una singola fase di trasmissione: il browser aggiunge i dati direttamente dopo l'URL dell'azione del modulo. Tra questi due si usa il segno di domanda per separarli.

I browser possono trasmettere informazioni di modulo tramite qualsiasi metodo menzionato sopra, mentre alcuni server accettano solo i dati forniti da uno di questi metodi. È possibile specificare nel属性的 method (metodo) del tag <form> quale metodo deve essere utilizzato per elaborare i dati dal server, sia POST o GET.

POST o GET?

Se il server di elaborazione dei moduli supporta sia il metodo POST che il metodo GET, quale metodo dovresti scegliere? Ecco alcune regole in merito:

  • Se si desidera ottenere la migliore prestazione di trasmissione del modulo, è possibile utilizzare il metodo GET per inviare moduli piccoli con pochi campi brevi.
  • Alcuni sistemi operativi dei server limitano il numero e la lunghezza dei parametri di riga di comando che possono essere trasmessi immediatamente all'applicazione. In questo caso, per quei moduli con molti campi o campi di testo lunghi, è necessario utilizzare il metodo POST per inviarli.
  • Se non hai esperienza nella scrittura di applicazioni di elaborazione dei moduli sul lato server, dovresti scegliere il metodo GET. Se si utilizza il metodo POST, è necessario fare alcuni lavori aggiuntivi di lettura e decodifica, che non sono difficili, ma potresti non voler affrontare questi problemi.
  • Se la sicurezza è un problema, consigliamo di utilizzare il metodo POST. Il metodo GET mette direttamente i parametri del modulo nell'URL dell'applicazione, permettendo agli spioni di catturarli facilmente e di estrarli dai file di log del server. Se i parametri contengono informazioni sensibili come il numero di carta di credito, può mettere a rischio la sicurezza dell'utente senza che questi se ne rendano conto. Le applicazioni POST, invece, non hanno vulnerabilità di sicurezza, e almeno possono utilizzare la crittografia quando trasmettono i parametri come transazioni separate al server per essere elaborate.
  • Se si desidera chiamare un'applicazione sul lato server al di fuori del modulo e includere il processo di trasmissione dei parametri, è necessario utilizzare il metodo GET, poiché questo metodo consente di includere i parametri come parte dell'URL. D'altra parte, le applicazioni POST desiderano che ci sia un processo di trasmissione aggiuntivo proveniente dal browser dopo l'URL, dove il contenuto della trasmissione non può essere considerato come contenuto del tag <a> tradizionale.

Passaggio chiaro dei parametri

Alcuni suggerimenti precedenti possono anche essere una spiegazione per la scelta di questo metodo. Supponiamo di avere un modulo molto semplice che contiene solo i parametri x e y. Durante la codifica dei valori degli elementi, hanno la forma come segue:

x=28&y=66

Se il modulo utilizza method=GET, l'URL utilizzato per richiamare l'applicazione sul lato server sarà come segue:

http://www.example.com/example/program?x=28&y=66

In qualsiasi momento possiamo creare un tag <a> tradizionale, utilizzarlo per chiamare un modulo con valori di parametri richiesti, nella forma come segue:

<a href="http://www.example.com/example/program?x=28&y=66">

L'unico problema è che il simbolo & usato per separare i parametri è anche il segno di inserimento delle entity di character. Se si inserisce un simbolo & nell'attributo href del tag <a>, il browser sostituirà i caratteri successivi con l'entity di character corrispondente.

Per prevenire questo problema, dobbiamo sostituire il simbolo & con il suo equivalente di entity, ovvero con "&" o "&". Dopo la sostituzione, l'esempio di riferimento dell'applicazione del server non in formato modulo sarà come segue:

<a href="http://www.example.com/example/program?x=28&y=66">

Poiché ancora non è possibile utilizzare il simbolo & nell'URL e potrebbe causare confusione in futuro, raccomandiamo che i server accettino anche l'uso di punto e virgola come separatore di parametri. Puoi anche consultare la documentazione del tuo server per sapere se questa funzione è supportata.

Supporto dei browser

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Supporto Supporto Supporto Supporto Supporto