URL senza "http | https"


89

Ho appena appreso da un collega che l'omissione della parte "http | https" di un URL in un collegamento farà sì che quell'URL utilizzi qualsiasi schema utilizzato dalla pagina.

Ad esempio, se si accede alla mia pagina all'indirizzo http://www.example.com e ho un collegamento (nota "//" all'inizio):

<a href="https://www.google.com">Google</a>

Quel link andrà a http://www.google.com .

Ma se accedo alla pagina su https://www.example.com con lo stesso link, andrà a https://www.google.com

Volevo cercare online ulteriori informazioni in merito, ma ho problemi a pensare a una buona frase di ricerca. Se cerco "URL senza HTTP", le pagine restituite riguardano gli URL con questa forma: "www.example.com", che non è quello che sto cercando.

Lo chiameresti URL senza schema? Un URL senza protocollo?

Funziona in tutti i browser? L'ho testato in FF e IE 8 e ha funzionato in entrambi. Fa parte di uno standard o dovrei testare più browser?



1
Per riferimento (dato che hai chiesto quali termini cercare), la ricerca su Google che mi ha portato alla domanda originale di StackOverflow è stata: "url assoluto senza protocollo"
David

non stai specificando se è un http o https, quindi il browser decide per te prendendo l'ultima pagina presumendo che il collegamento provenga dalla stessa pagina.
raym0nd

Grazie David, il link al duplicato ha risposto a tutte le mie domande
topher-j

1
@ David: Per essere esattamente, non lo chiameresti URL assoluto se non avesse un protocollo; è piuttosto un URL relativo.
Gumbo

Risposte:



15

Si chiama riferimento percorso di rete (la parte mancante è chiamata schemeor protocol) definito nella sezione RFC3986 4.2

4.2 Riferimento relativo

Un riferimento relativo sfrutta la sintassi gerarchica (Sezione 1.2.3) per esprimere un riferimento URI relativo allo spazio dei nomi di un altro URI gerarchico.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

L'URI a cui fa riferimento un riferimento relativo, noto anche come URI di destinazione, si ottiene applicando l'algoritmo di risoluzione del riferimento della Sezione 5.

Un riferimento relativo che inizia con due caratteri barra viene definito riferimento al percorso di rete (enfasi mia); tali riferimenti sono usati raramente. Un riferimento relativo che inizia con un singolo carattere barra viene definito riferimento a percorso assoluto. Un riferimento relativo che non inizia con un carattere barra viene definito riferimento a percorso relativo.

Un segmento di percorso che contiene un carattere di due punti (ad esempio, "questo: quello") non può essere utilizzato come primo segmento di un riferimento di percorso relativo, poiché verrebbe scambiato per un nome di schema. Tale segmento deve essere preceduto da un punto-segmento (ad esempio, "./this:that") per fare un riferimento al percorso relativo.


// non può essere utilizzato nel tag di base in html. Ho impostato <base href = "// abc.com/" e un relativo URL immagine <img src = "/ img / logo.jpg>. Tuttavia, aperto nel browser, il collegamento dell'immagine diventerà file: /// abc. com / img / logo.jpg. Qualche soluzione alternativa?
Scott Chu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.