Forespørgselsstreng
Den forespørgsel komponent , ofte søgestrengen ( engelsk for query string ) er en del af en Uniform Resource Locator (URL) i World Wide Web og i RFC 3986 angivet. Forespørgselskomponenten indeholder data, ofte i form af navngivne parametre , som kan sendes til en webserver og evalueres af downstream -serverdelen af et webprogram .
konstruktion
En forespørgselsstreng begynder med et spørgsmålstegn ( ?) og slutter med et hashtegn ( #) eller enden på webadressen. Den består ofte af en eller flere parametre, ofte i form af nøgleværdi-par, som ofte adskilles fra hinanden med et ampersand ( &). Parameternavnet og værdien adskilles af et reserveret tegn , normalt et lighedstegn ( =). De angivne separatorer svarer til kravene i World Wide Web Consortium (W3C) til overførsel af HTML -formulardata .
Følgende URL indeholder forespørgselsstrengen stichwort=wiki&ausgabe=liste:
http://www.example.org/suche?stichwort=wiki&ausgabe=liste
I dette tilfælde er parameteren er stichwortværdien wikiog parameteren ausgabeværdi listetildeles.
eksempel
En webformular implementeres som følger:
<form action="suche.php" method="get">
<label for="stichwort">Suche nach</label>
<input type="text" name="stichwort" id="stichwort" />
<input type="hidden" name="suchdatum" value="2019-11-27" />
<input type="submit" value="Suche starten" />
</form>
Bemærk det skjulte ( type="hidden") felt suchdatum. Det er ikke synligt i browseren, men bliver en del af forespørgselsstrengen, når formularen sendes. Knappen Send på den anden side er ikke inkluderet i forespørgselsstrengen, fordi den ikke har fået et navn ( name). Hvis brugeren indtaster søgeordet "wiki" i tekstfeltet og indsender formularen, stichwort=wiki&suchdatum=2019-11-27genereres f.eks. Følgende URL med den tilhørende forespørgselsstreng :
http://<server>/suche.php?stichwort=wiki&suchdatum=2019-11-27
Evaluering (i PHP)
Forespørgselsstrengen kan forespørges i PHP . Indholdet af forespørgselsstrengen er tilgængeligt som en matrix .
echo $_GET['stichwort'];
udsender f.eks. den tekst, der blev indtastet i søgefeltet.
print_r($_GET);
resultater med ovenstående eksempel
Array
(
[stichwort] => wiki
[suchdatum] => 2019-11-27
)
Ulemper og problemer
Kodning
Nogle tegn må ikke vises i en forespørgselsstreng, da de ellers kunne tolkes forkert. Hvis f.eks. Lighedstegnet bruges inden for en værdi, genkendes dette forkert som en nøgle-værdiseparator. Ved generering af forespørgselsstrengen skal disse tegn være specielt kodet - f.eks. Skal et mellemrum +konverteres til et plustegn ( ).
Separator for parametre
Den tegnet ( &) som separator af nøgleværdipar er problematisk i HTML-dokumenter, som denne karakter skal specielt kodet i henhold til World Wide Web Consortium (W3C). W3C anbefaler derfor at adskille parrene med et semikolon ( ;).
Sikkerhedsrisici
Da forespørgselsstrengen er en del af webadressen, kan den ses og ændres af alle internetbrugere i browseren . I en webapplikation bør derfor kun ikke-kritiske parametre indsættes i forespørgselsstrengen, f.eks. Posten i et søgefelt.
Tekniske begrænsninger
Hvis en større mængde data skal overføres, er det tilrådeligt ikke at overføre dem via URL'en, men i meddelelsesdelen ved hjælp af HTTP -metoden POST , da nogle begrænsninger gælder for webadresser:
- Af kompatibilitetshensyn anbefaler HTTP -specifikationen en maksimal størrelse på 255 bytes til webadresser eller URI'er .
- Den Internet Explorer understøtter ikke webadresser, der består af mere end 2.083 tegn.
- Webservere kan selv begrænse den maksimale længde af en forespørgselsstreng. Hvis denne grænse overskrides, sender serveren HTTP -statuskoden 414 tilbage til klienten.
- Den (i mellemtiden forældede) HTML 3 -specifikation foreskriver en maksimal længde af linkmål på 1024 tegn. Denne begrænsning gælder ikke længere fra HTML 4.
Se også
Individuelle beviser
- ^ T. Berners -Lee, R. Fielding, L. Masinter: RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax . [Fejl: RFC 3986 ]. Januar 2005. Afsnit 3.4: Forespørgsel. Standard: [66]. (Erstatter RFC 2732 , RFC 2396 , RFC 1808 - Opdateret af RFC 6874 , RFC 7320 - Engelsk).
- ↑ 17 Formularer. 17.13.4 Formindholdstyper. I: HTML 4.01 -specifikation. World Wide Web Consortium (W3C), 27. marts 2018, tilgås 27. november 2019 .
- ^ W3C-anbefaling til adskillelse af nøgle-værdiparene
- ↑ HTTP / 1.1 -specifikation
- ↑ http://support.microsoft.com/kb/208427
- ↑ HTML 3 -specifikation