En URLs anatomi

A URL's anatomy

En URL (Universal Resource Locator) används för att peka ut resurser på webben.
Det finns mycket spännande att utforska och utnyttja med URL:er i testsammanhang.
A URL (Universal Resource Locator) is used to locate resources on the web.
There is a lot to explore and exploit about URL's in testing.

https Protokoll-information för överföringsmetod. Brukar bestå av t.ex:
  • http
  • https
  • file
  • ftp
  • o.s.v.
Om denna utelämnas fyller en webbläsare på med http, som sedan ofta redirectas till https av webbservern.
Protocol information for transfering data. E.g:
  • http
  • https
  • file
  • ftp
  • o.s.v.
If omitted the browser generally adds http, that often is redirected to https by the web server.
:// username:password@ Valfri login-information ifall tjänsten har basic authentication. Om denna utelämnas används den användarkontext som webbläsaren startats i som default. Detta webbläsarbeteende kan ändras i dess inställningar. Optional logon information for basic authentication type authentication. If omitted the user context for the user starting the web browser is used. This behavior could be changed in browser settings. hostname. Valfritt, men nästan alltid förekommande host-namn. Detta är egentligen ett datornamn men många gånger mappar man namn på tjänster som om det vore egna datorer.

Om hostnamn utelämnas används information från webbserverns inställningar eller från .htaccess-filen i katalogen den efterfrågade resursen hämtas från på webbservern (eller närmsta sådana fil uppåt i katalogträdet om sådan saknas).
Optional but frequently used host name. Originally a computer name, but now it's often mapped to a service name as if it would be a computer name.

If omitted web server settings direct the request or the closest .htaccess file in the web server root folder is used.
myorganization.com Obligatoriskt domän-namn. Detta består av två delar där det avslutande domän-suffixet utgörs av standardiserade 2-4 bokstäver långa landsbeteckningar eller andra reserverade strängar. Mandatory domain name. Consist of two parts where the last part is the domain suffix. :8080 Tillvalbar information om IP-port för kommunikationen. Det finns standardiserade IP-portar för de välanvända protokollen som HTTP=80 och HTTPS=443. Dessa används om man inte anger någon port. Ibland styr man dock om till interna proxys och kan då byta port, och ibland skiljer man mellan olika webbserverinstanser på samma server med vilken port den lyssnar på. Optional IP port information for directing traffic. Many well-used protocol types use standardized IP ports, like HTTP=80, or HTTPS=443.
If omitted the standard port for the protocol will be used. Sometimes internal proxies or web server instances sharing hosts require IP port redirects.
/path/to/my/resource/ Sökvägem till efterfrågad resurs håller oftast en logisk struktur och utgör information till webbservern var den kan hitta efterfrågad resurs.
Om resursen är en fil som hämtas med file:// som protokoll kan det i vissa webbläsare accepteras att ha \ istället för / för sökvägar i Microsoft Windows.
Om path utelämnas styr webbserverinställningar eller närmsta .htaccess-filen vilken path man dirigeras till.
The path to a resource should be based on a logical structure. The path contains information to the web server what resource is requested.
If the resource is a file requested with file:// as protocol some web browsers accept substituting / with \ for Windows based paths.
If the path is omitted the web server settings or the nearest .htaccess-file what path you get redirected to.
index.html Resurser kan ses som filer, men ibland genereras de inför förfrågan. Det är t.ex. en HTML-fil, CSS-fil, bild eller Javascript-fil som överförs till HTTP-klient som efterfrågar den.
Om resursnamn utelämnas styr webbläsarinställningar eller närmsta .htaccess-filen vilken resurs som avses.
You may think of resources as files but sometimes they are generated for each request. If the path is omitted the web server settings or the nearest .htaccess-file what path you get redirected to.
?location=sweden&age=26 Parametrar används t.ex. vid REST-tjänster för att specificera sökparametrar, men de används ibland också av webbservrar för att ta emot kompletterande information för de efterfrågade resurserna.
Det är helt enkelt ett sätt att skicka information till webbservern. Googles hemsida skickar din sökfråga i en parameter som heter q=. Parameter-delen av URL:en inleds med ett ? och sedan avskiljs varje parameter med ett &-tecken. Parametrar har namn och vanligen också ett värde samt en operand (=, >, <).
Parameters are for example used with REST services to specify query parameters. Web servers sometimes use them to receive additional information for the requested resources.
For example Google search site uses a parameter called q to send your request to the server. The parameter part of a URL is initiated by a ? and each query parameter is separated by a & sign. Parameters usually has a name, and operand (=, >, <) and a value.

Potentiella felkällor

  • Hela URL:en har en egen teckenkodning (URL encoding). Ett mellanrum blir t.ex. %20 vilket man ser ibland. Det är sällan något bekymmer för själva domännamnet eller host-namn, men det betyder att användarnamn, lösenord och parametrar eventuellt behöver kodas om så att tecken som inte får förekomma i en URL har URL encoding.
  • För lång URL. Om man har lång sökväg (path) och många parametrar kan sökvägen bli för lång och trunkeras då. Detta sker t.ex. om man har sessions-id:n i URL (vilket ska undvikas eftersom URL kan läsas av alla)-

Potential problems with URLs

  • The character encoding of URLs is called URL encoding. For example space become %20 in URLs, as can sometimes be seen. For the host name or domain name this rarely poses a problem, but passwords, usernames and parameter names and parameter values might be affected and have to be re-encoded in scripts.
  • Very long URLs get truncated. This could happen if you have a deep resource path and a lot of parameters in the request - like for example a session token (really discouraged use since any man-in-the-middle can see the URL).

Trix med URL:er

  • Undvik webbcachar: Webbservrar läser vanligen bara de parametrar de är intresserade av, så du kan oftast lägga till egna, t.ex. minkoll=abc123 eller kanske v=2 innan andra parametrar för att undvika träffar från cache då cache jämför URL för att veta om den har ett svar sparat.
  • Operativsystemen på datorer har många inbyggda hjälpmedel för att felsöka kommunikationsproblem. I terminalfönster brukar man kunna skriva t.ex. tracert, ping, telnet, ipconfig/ifconfig och mycket mer.

Trix with URLs

  • Avoid cachine: Most web servers discards parameters they aren't interrested in, but caching mechanisms don't. This mean you may add additional custom parameters to avoid caching. E.g. adding myvariable=1234 as an additional parameter to an URL
  • Your computer operating system contains a myriad of tools to troubleshoot communication problems. Use your terminal to write tracert, ping and much more