HTML <form> method-ominaisuus
Määrittely ja käyttö
method
Atribuutti määrittää, miten lomakkeen tiedot lähetetään (lomakkeen tiedot lähetetään action-ominaisuudessa määritettyyn sivuun)
Lomakkeen tiedot voidaan lähettää URL-varianteina (käytettäessä method="get") tai HTTP POST-transaktiona (käytettäessä method="post")
GET-säännön selitys:
- Lisää lomakkeen tiedot nimiparina URL:seen
- URL:lla on pituusrajoitus (noin 3000 merkkiä)
- Älä käytä GET-sääntöä lähetettäessä arkaluonteisia tietoja! (Näkyvissä URL:ssa)
- Hyödyllinen, kun käyttäjä haluaa lisätä tuloksen kirjanmerkkeihin
- GET sopii paremmin turvattomille tiedoille, kuten Google-hakujen merkkijonot.
POST-kohdalla oleva selitys:
- Lisää lomakkeen tiedot HTTP-pyynnön sisäänvedossa (tiedot eivät näy URL:ssa).
- Ei ole kokoluokkaa.
- POST-menetelmällä lähetetyn lomakkeen ei voi lisätä kirjanmerkkeihin.
Esimerkki
Esimerkki 1
Lähetä lomake "get"-menetelmällä:
<form action="/action_page.php" method="get"> <label for="fname">Etunimi:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Sukunimi:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Lähetä"> </form>
Esimerkki 2
Lähetä lomake "post"-menetelmällä:
<form action="/action_page.php" method="post"> <label for="fname">Etunimi:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Sukunimi:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Lähetä"> </form>
Syntaksi
<form method="get|post">
Ominaisuuden arvo
Arvo | Kuvaus |
---|---|
get | Oletus. Lisää lomakkeen tiedot URL:n nimen ja arvon muodossa: URL?name=value&name=value. |
post | Lähetä lomakkeen tiedot HTTP POST-transaktiona. |
method-ominaisuuden selitys
Selain lähettää lomakkeen tiedot palvelimelle käsittelyyn käyttämällä method-ominaisuudessa määritettyä menetelmää. On olemassa kaksi menetelmää: POST- ja GET-menetelmät.
Jos käytetään POST-metodia, selain lähettää tiedot seuraavissa kahdessa vaiheessa. Ensimmäinen vaiheessa selain luo yhteys action-ominaisuudessa määritettyyn lomakkeen käsittelypalvelimeen, ja kun yhteys on muodostettu, selain lähettää tiedot palvelimelle segmentoituna.
Palvelimella, kun POST-tyyppinen sovellus alkaa suoritua, parametrit tulisi lukea merkinnästä, ja ennen kuin sovellus voi käyttää näitä lomakkeen arvoja, näiden parametrien on käytävä läpi dekoodaus. Käyttäjäkohtainen palvelin määrittää selvästi, miten sovellus tulisi hyväksyä nämä parametrit.
Toinen tilanne on käyttää GET-metodia, jolloin selain luo yhteys lomakkeen käsittelypalvelimeen ja lähettää kaikki lomakkeen tiedot suoraan yhdessä siirtoaskeleessa: selain liittää tiedot suoraan lomakkeen action-URL:n jälkeen. Näiden kahden välillä käytetään kysymysmerkkiä erottimena.
Yleisesti ottaen selaimet voivat käyttää yhtä tai toista menetelmää lähettääksensä lomakkeen tiedot, mutta jotkut palvelimet hyväksyvät vain yhden menetelmän tarjoamat tiedot. Voit määrittää <form>-elementin method (menetelmä) -attribuutin, jotta lomakkeen käsittävän palvelin käyttää tätä menetelmää käsittelemään tietoja, joko POST tai GET.
POST vai GET?
Jos lomakkeen käsittävän palvelimen on sekä POST- että GET-metodi, mikä menetelmä sinun tulisi valita? Tässä on joitakin sääntöjä tästä:
- Jos haluat saada parhaan lomakkeen siirto suorituskyvyn, voit käyttää GET-metodia lähettämään pieniä lomakkeita, joissa on vain muutama lyhyt kenttä.
- Jotkut palvelinoperating systemit rajoittavat komentoriviparametrien määrää ja pituutta, ja tällaisissa tapauksissa lomakkeiden, joilla on monia kenttiä tai pitkiä tekstikenttiä, tulisi käyttää POST-metodia lähettämiseen.
- Jos sinulla ei ole paljon kokemusta palvelinpuoleisen lomakkeen käsittelystä, suosittelemme käyttämään GET-metodia. Jos käytät POST-metodia, sinun täytyy tehdä lisätyötä lukiessa ja dekoodaessa metodia, mikä ei ehkä ole niin vaikeaa, mutta se saattaa olla sinulle epämukavaa.
- Jos turvallisuus on kysymys, suosittelemme käyttämään POST-metodia. GET-metodi asettaa lomakkeen parametrit suoraan sovelluksen URL:hen, jolloin verkkoseuraajat voivat helposti havaita ne ja niitä voidaan myös ottaa palvelimen lokitiedostoista. Jos parametreihin sisältyy arkaluontoisia tietoja, kuten luottokortin tilinumeroa, käyttäjän turvallisuus voi vaarantua tietämättä.
- Jos haluat kutsua palvelinsovellusta ulkopuolelta ja välittää sille parametreja, sinun täytyy käyttää GET-metodia, koska tämä metodi mahdollistaa lomakkeen kaltaisten parametrien sisällyttämisen URL:n osaksi. Toisaalta, POST-muodossa olevat sovellukset toivovat, että URL:n jälkeen on vielä erillinen siirto prosessista, jonka sisältöä ei voida käyttää perinteisen <a> -elementin sisällönä.
Selkeästi välitetty parametri
Edellä mainitut ehdotukset voivat myös toimia selityksenä tälle menetelmälle. Oletetaan, että sinulla on erittäin yksinkertainen lomake, jossa on vain x ja y -parametrit. Kun näiden elementtien arvot koodataan, ne näyttävät tältä:
x=28&y=66
Jos lomake käyttää method=GET, URL, jota käytetään viittaamaan palvelinsovellukseen, on seuraavanlainen:
http://www.example.com/example/program?x=28&y=66
Aina voimme luoda perinteisen <a> -elementin, jota käytetään kutsuessaan lomaketta, jossa on tarvittavat parametrit, kuten seuraavasti:
<a href="http://www.example.com/example/program?x=28&y=66">
Ainoa ongelma on, että parametrien erottamiseen käytettävä &-merkki on myös merkkijonon sisällä oleva symboli. Jos &-merkkiä lisätään <a>-elementin href-ominaisuuteen, selain korvaa sen jälkeisen merkin vastaavalla merkkijonolla.
Jotta tämä tilanne voidaan estää, meidän on korvattava &-merkki sen ekvivalentilla merkinnällä, eli "&" tai "&". Korvattuaan yllä oleva virheellinen esimerkki, joka ei ole lomaketta, näyttää tältä:
<a href="http://www.example.com/example/program?x=28&y=66">
Koska &-merkkiä ei voi vieläkään käyttää URL:ssä ja se voi aiheuttaa sekavuutta tulevaisuudessa, suosittelemme, että palvelin asettaa lopulta myös semikoolon (;) hyväksyttäväksi parametrien erottimeksi. Voit myös tarkistaa palvelimesi dokumentaation, mikäli se tukee tätä toimintoa.
Selaimen tuki
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Tuki | Tuki | Tuki | Tuki | Tuki |