2013-07-01 13 views
17

Ci sono (almeno) tre modi per collegare a una risorsa (completo?):Qual è la definizione di un URL assoluto

  1. href="foo/bar.html"
  2. href="/foo/bar.html"
  3. href="http://example.com/foo/bar.html"

Il primo è un "url relativo", nessun problema. Ma ho visto (2) e (3) entrambi indicati come un "url assoluto". Che è correttamente definito un "url assoluto" e qual è il nome proprio dell'altro?

(punti di bonus per i riferimenti alle norme pertinenti o altra documentazione ufficiale.)

risposta

30

RFC 3986 definisce identificatori di risorse uniformi.

Un riferimento relativo che inizia con un carattere di barra è
denominato un riferimento assoluto-percorso. Un riferimento relativo che
non inizia con un carattere di barra viene definito un riferimento di percorso relativo.

  1. href="foo/bar.html" è un riferimento relativo, in particolare un riferimento relativo percorso.
  2. href="/foo/bar.html" è un riferimento relativo un absolute path
  3. href="http://example.com/foo/bar.html" è un absolute URI
  4. href="//example.com/foo/bar.html" è un riferimento rete percorso

Un riferimento relativo che inizia con due barra i caratteri sono definiti riferimenti di percorsi di rete; tali riferimenti sono usati raramente.

+2

Per il n. 4, ha convenuto che sono usati raramente, ma direi che è molto utile per loro. Qualsiasi contenuto ospitato sia su HTTP che su HTTPS sullo stesso percorso trarrebbe vantaggio da questo: evitare il sovraccarico di HTTPS quando non è necessario e utilizzarlo su pagine sicure per evitare avvisi del browser. Gli script ospitati su CDN sono un buon esempio: ([vedi questo post] (http://stackoverflow.com/questions/3622598/https-and-external-cdn-hosted-files/3622615#3622615)) –

+1

@JoeEnos Accetto con te; questa è una citazione diretta da RFC. –

+0

Divertente come solo 4 anni dopo, e "riferimenti del percorso di rete" sono ubatti nei riferimenti allo script CDN. –

1

RFC 3986 (URI Generic Syntax) specifica nella sezione 4.3. URI assoluto la seguente regola:

absolute-URI = scheme ":" hier-part [ "?" query ]

Pertanto, # 2 non è un URI assoluto

1

credo (2) è anche un URL relateive e (3) è un assoluto URL.

http://kb.iu.edu/data/abwp.html mostra alcuni esempi.

Su http://www.wisegeek.com/what-is-an-absolute-url.htm, spiega come questo:

"URL assoluto fornisce completa le informazioni sulla posizione Si comincia con http:.. // e continua, tra cui tutti i dettagli Questo significa che se il webmaster dovesse cambiare la posizione del file originale, una specifica URL assoluta troverebbe l'immagine, mentre la specifica relativa dell'URL non lo farebbe. "

+0

Credo che tu sia sostanzialmente corretto, ma i riferimenti di seconda mano come quelli sono inclini a contribuire al FUD, motivo per cui ho chiesto riferimenti a fonti autorevoli. –

+0

Buon punto. Lo prenderò in considerazione la prossima volta. – Brian

4

"Gli URL assoluti contengono una grande quantità di informazioni che potrebbero già essere note dal contesto del recupero del documento di base, inclusi lo schema, l'ubicazione di rete e parti del percorso dell'URL."

http://tools.ietf.org/html/rfc1808

Il numero (2) è un percorso assoluto , la (3) è un URL assoluto.

1

mi piace la descrizione del W3 trovato here:

Un URL è un URL assoluto se la risoluzione si traduce nella stessa uscita indipendentemente da ciò che si è risolta rispetto a, e che l'uscita non è un fallimento.

Non visualizza schema, percorso o altri concetti simili, ma in pratica dice solo che lo stesso input porta sempre lo stesso risultato. Puoi solo dire che circa # 3.

Non vorrei essere troppo preso dai tecnicismi però - # 2 è ancora assoluto se il tuo universo è il sito web. Anche qualcosa come //example.com/foo/bar.html è assoluto se il tuo universo è lo schema. Penso che la parola "assoluto" in quei casi sia ancora significativa dal punto di vista dello sviluppatore.

1

Solo # 3 corrisponde alla definizione di URL assoluto. 1 & 2 sono URL relativi.

Un URL relativo (definito in [RFC1808]) non contiene alcun protocollo o informazioni macchina e il suo percorso si riferisce generalmente a un documento HTML sulla stessa macchina del documento corrente. Gli URL relativi possono contenere componenti relativi del percorso (".." indica la posizione principale) e possono essere URL di frammento. Fonte: http://www.w3.org/TR/WD-html40-970708/htmlweb.html

Un URL è un URL assoluto se la risoluzione si traduce nella stessa uscita indipendentemente da ciò che si è risolta rispetto a, e che la produzione non è un fallimento. Fonte: http://www.w3.org/TR/url/

1

Il termine che ho sentito per # 2 è "relativo relativo". Credo che questa sia una definizione utile poiché il suo significato è chiaro nella formulazione e lo distingue prontamente dai n. 1 e n.

Problemi correlati