C'è qualche aspetto negativo per l'utilizzo di una doppia barra che porta ad ereditare il protocollo in un URL? cioè src = “// domain.com”

StackOverflow https://stackoverflow.com/questions/4659345

  •  09-10-2019
  •  | 
  •  

Domanda

Ho un foglio di stile che carica le immagini provenienti da un dominio esterno e ho bisogno di caricare da https: // dalle pagine di ordine sicuri e http: // da altre pagine, sulla base del URL corrente. Ho trovato che a partire l'URL con una doppia barra eredita il protocollo corrente. Fare tutti i browser supportano questa tecnica?

html es:

<img src="//cdn.domain.com/logo.png" />

css es:

.class { background: url(//cdn.domain.com/logo.png); }
È stato utile?

Soluzione

Se i supporti del browser RFC 1808 sezione 4 , RFC 2396 Sezione 5.2 , o RFC 3986 Sezione 5.2 , allora sarà davvero utilizzare lo schema di pagina URL per i riferimenti che iniziano con "//".

Altri suggerimenti

Quando utilizzato su un link o @import, IE7 / IE8 scaricherà il file due volte al http://paulirish.com/2010/the-protocol-relative-url/

Aggiornamento dal 2014:

  

Ora che SSL è incoraggiato per tutti e non ha problemi di prestazioni , questa tecnica è ormai un anti-modello . Se l'attività che vi serve è disponibile su SSL, quindi sempre usare la risorsa https://.

Un difetto si verifica se gli URL sono visti al di fuori del contesto di una pagina web. Ad esempio, un messaggio di posta elettronica si siede in un client di posta elettronica (ad esempio, Outlook) ha effettivamente alcun URL, e quando si sta visualizzando un messaggio contenente un URL relativo a protocollo, non v'è alcun contesto di protocollo evidente a tutti (il messaggio stesso è indipendente del protocollo utilizzato per prenderlo, che si tratti di POP3, IMAP, Exchange, UUCP o altro) in modo che l'URL non ha alcun protocollo per essere relativo a. Non ho studiato la compatibilità con i client di posta elettronica per vedere cosa fanno quando sono presentati con un gestore di protocollo mancante - sto cercando di indovinare che la maggior parte avrà una congettura a http. Apple Mail si rifiuta di farvi entrare un URL senza un protocollo. E 'analogo al modo in cui gli URL relativi non funzionano in e-mail a causa di un contesto simile mancante.

Problemi simili potrebbero verificarsi in altri non-HTTP contesti come nel tweet, messaggi SMS, documenti Word ecc.

La spiegazione più generale è che gli URL di protocollo anonimi non possono lavorare in modo isolato; ci deve essere un contesto rilevante. In una pagina web tipica è quindi bene a tirare in una libreria di script in questo modo, ma tutti i link esterni deve sempre specificare un protocollo. Ho provato un test semplice:. //stackoverflow.com mappe a file:///stackoverflow.com in tutti i browser che ho provato in, in modo che davvero non funzionano da soli

Il motivo potrebbe essere quello di fornire le pagine web portatili. Se la pagina esterno non viene trasportato criptato (http), perché dovrebbero gli script collegate essere criptati? Questo sembra essere una perdita di prestazioni inutili. Nel caso, la pagina esterno è saldamente trasportata registra criptata (https), quindi il contenuto collegato deve essere crittografato, anche. Se la pagina è crittografato, il contenuto collegato non, IE sembra emettere un Contenuti misto di avvertimento. Il motivo è che un attaccante può manipolare gli script sulla strada. Vedere http://ie.microsoft.com/testdrive/Browser/ MixedContent / Default.html? o = 1 per una discussione più lunga.

Il HTTPS Everywhere campagna del FEP suggerisce di usare https quando possibile. Abbiamo la capacità del server in questi giorni per servire le pagine web sempre criptato.

Solo per completezza. Questo è stato menzionato in un altro thread:

  

'Le due barre sono una scorciatoia comune per qualsiasi protocollo   viene utilizzato a destra '

if (plain http environment) {
use 'http://example.com/my-resource.js'
} else {
    use 'https://example.com/my-resource.js'
}

Si prega di controllare l'intero thread.

Sembra essere una tecnica abbastanza comune ora. Non v'è alcun aspetto negativo, aiuta solo di unificare il protocollo per tutte le attività sulla pagina in modo deve essere utilizzato ovunque sia possibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top