2010-07-08 25 views
11

Ho visto alcuni siti utilizzare //somedomain.com/images/img.jpg vs http://somedomain.com/images/img.jpg che include anche lo http:.Qual è la differenza tra l'uso di "http: //" e solo "//" in src o href?

C'è una differenza tra i due? Il browser sta solo correggendo lo http: mancante e queste persone sono pigre? Sono curioso dietro al ragionamento.

+1

Quando dici di aver "visto siti" dove li hai visti? È stampato o il nome del link su un sito web? –

+0

Voglio dire guardando il loro codice sorgente. non in un articolo stampato o qualcosa del genere. – chadley

risposta

11

Se si è già sul sito tramite http, si presume che si stia parlando di http e si colleghi allo stesso server tramite lo stesso protocollo. Lo stesso con https. Se si è http e si desidera passare a https, è necessario specificare il protocollo nello href.

+0

quindi questo sarebbe usato su siti che possono essere visualizzati su 'http' o' https'? – chadley

+3

@chadley - l'intenzione è meno per l'uso locale, ma piuttosto per l'uso remoto. Se 'superanalytics.com' offre sia HTTP che HTTPS, potrebbe dirti di includere il suo script di analisi con l'URI' // superanalytics.com/analytics.js'.In questo modo, se stai eseguendo HTTP, anche SuperAnalytics. Se esegui HTTPS, anche SuperAnalytics. E poi non si prendono quelle cattive "Questo è un sito sicuro con cose non sicure su di esso!" avvertenze. – Matchu

+0

grazie per aver chiarito il matchu. questo ha perfettamente senso ora che hai indicato un esempio. – chadley

-1

Non ho mai visto //somedomain.com/images/img.jpg e non penso che sia legale.

Ho visto /images/img.jpg che significa "utilizza il dominio corrente". È utile se hai diversi indirizzi web (ad es. Aaaaa.com & aaaaa.net) che puntano allo stesso sito.

+1

È legale infatti. –

7

Non che l'abbia mai visto prima, ma è un riferimento URI valido. Dalla grammatica:

URI-reference = URI | relative-ref 

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

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

dove come un URI assoluto è:

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

Per ulteriori informazioni, non esitate a leggere il resto di RFC3986

+0

+1. È eccellente! Lo userò ora ovunque! (Almeno per i collegamenti ai file sul server che ospita contenuto statico). –

+0

Nota che questo significa che non c'è motivo di usare due barre nella pratica: solo una conterà come un percorso assoluto. – Chuck

+0

Penso che questa risposta manchi il punto. È valido, ma anche funzionale. Vedi la risposta di @ rakuo15. – Matchu

2

//somedomain.com/images/img.jpg è una sintassi URI perfettamente valido ai sensi RFC 3986: Section 4.2.

È relativo all'attuale scheme e pertanto può essere molto utile quando si passa da http a https, perché non è necessario specificare lo schema.

tutti i browser moderni capirà quel formato, tra cui IE 6.

3

URL Scheme-relativo sono particolarmente utili quando si sta servendo un sito web HTTPS e si desidera condividere lo stesso contenuto statico come fogli di stile, immagini, script e così via come da un sito HTTP. Hardcoding http: nei collegamenti contenuti statici come <link href>, <script src>, <img src> e così via e la visualizzazione della pagina web in sé oltre https: causerebbe il browser web media al pop un avviso di protezione, come le seguenti ben noti avvisi di sicurezza di IE:

alt text

alt text

Fornire il contenuto "non protetto" su un URL relativo allo schema risolverebbe il problema.

Problemi correlati