forms esempio È consigliabile utilizzare un URL vuoto per l'attributo dell'azione di un modulo HTML?(action=“”)




form html php (8)

Penso che sia meglio dichiarare esplicitamente dove si trova il modulo. Se vuoi essere totalmente sicuro, inserisci lo stesso URL in cui si trova il modulo nell'attributo azione se desideri che venga inviato nuovamente a se stesso. Sebbene i browser tradizionali valutino "" nella stessa pagina, non puoi garantire che i browser non mainstream lo faranno.

E, naturalmente, l'intero URL inclusi i dati GET come Juddling sottolinea.

Mi chiedo se qualcuno possa dare una risposta "best practice" all'utilizzo di azioni in formato HTML vuote per postare nuovamente alla pagina corrente.

C'è un post che chiede che cosa fa un'azione di form HTML vuoto qui e alcune pagine come questa suggeriscono che va bene, ma mi piacerebbe sapere cosa pensa la gente.


Answer #1

La cosa migliore che puoi fare è tralasciare del tutto l'attributo action. Se lo lasci fuori, il modulo verrà inviato all'indirizzo del documento, vale a dire la stessa pagina.

È anche possibile lasciarlo vuoto e qualsiasi browser che implementa l'algoritmo di sottomissione del modulo HTML lo considererà equivalente all'indirizzo del documento, cosa che lo fa principalmente perché è così che i browser attualmente funzionano:

8. Lascia che l'azione sia l' action dell'elemento sottomesso.

9. Se action è la stringa vuota, lasciare che l'azione sia l'indirizzo del documento .

Nota: questo passaggio è una violazione intenzionale di RFC 3986, che richiederebbe l'elaborazione dell'URL di base qui. Questa violazione è motivata dal desiderio di compatibilità con i contenuti legacy. [RFC3986]

Funziona sicuramente in tutti i browser correnti, ma potrebbe non funzionare come previsto in alcuni browser più vecchi ( "i browser fanno cose strane con un'azione vuota =" "attributo " ), motivo per cui le specifiche scoraggia fortemente gli autori dal lasciarli vuoti :

Gli attributi del contenuto di action e formaction , se specificati, devono avere un valore che è un URL non vuoto valido potenzialmente circondato da spazi .


Answer #2

Lo facevo spesso quando lavoravo con ASP classico. Di solito l'ho usato quando era necessaria una convalida sul lato server di qualche tipo per l'input (prima dei giorni di AJAX). L'aspetto principale che vedo è che non separa la logica di programmazione dalla presentazione, a livello di file.


Answer #3

Basta usare

?

<form action="?" method="post" enctype="multipart/form-data" name="myForm" id="myForm">

Non viola gli standard HTML5.


Answer #4

Questo verrà convalidato con HTML5.

<form action="#">

Answer #5

Non includendo l'attributo action si apre la pagina agli attacchi iframe clickjacking , che prevedono alcuni semplici passaggi:

  • Un utente malintenzionato avvolge la tua pagina in un iframe
  • L'URL iframe include un parametro query con lo stesso nome di un campo modulo
  • Quando il modulo viene inviato, il valore della query viene inserito nel database
  • Le informazioni identificative dell'utente (email, indirizzo, ecc.) Sono state compromesse

Riferimenti


Answer #6

Io non uso affatto l'attributo action. In realtà è come viene progettato il mio framework per tutte le pagine che vengono inviate indietro esattamente allo stesso indirizzo. Ma oggi ho scoperto il problema. A volte prendo in prestito il valore di un attributo di azione per fare qualche chiamata in background (suppongo che alcune persone li chiamino AJAX). Così ho trovato che IE mantiene il valore di attributo di azione come vuoto se non è stato specificato l'attributo di azione. È un po 'strano secondo me, dal momento che se non viene specificato alcun attributo di azione, la controparte JavaScript deve essere almeno indefinita. Ad ogni modo, il mio punto è che prima di scegliere le migliori pratiche è necessario comprendere più contesto, ad esempio si utilizzerà l'attributo in JavaScript o no.


Answer #7

Di solito uso action = "", che è XHTML valido e conserva i dati GET nell'URL.





html