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

  1. ^ 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).
  2. 17 Formularer. 17.13.4 Formindholdstyper. I: HTML 4.01 -specifikation. World Wide Web Consortium (W3C), 27. marts 2018, tilgås 27. november 2019 .
  3. ^ W3C-anbefaling til adskillelse af nøgle-værdiparene
  4. HTTP / 1.1 -specifikation
  5. http://support.microsoft.com/kb/208427
  6. HTML 3 -specifikation