Bir URL'deki protokolü devralmak için önde gelen çift eğik çizgi kullanmanın bir dezavantajı var mı? ie src = “// domain.com”


148

Harici bir etki alanından görüntüleri yükleyen bir stil sayfası var ve geçerli siparişe göre güvenli sipariş sayfalarından https: // ve diğer sayfalardan http: // yüklemesi gerekiyor. URL'yi çift eğik çizgi ile başlatmanın geçerli protokolü devraldığını buldum. Tüm tarayıcılar bu tekniği destekliyor mu?

html eski:

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

css eski:

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

1
bu siteyi yavaşlatıyor mu ???
TheBlackBenzKid

2
Meder'in cevabında aşağıda listelediği durumlar dışında, bunun performans üzerinde herhangi bir etkisi olmaması için hiçbir neden yoktur.
Rob Volk

Görünüţe göre bir ţeyler yaptým. Birkaç ay önce Google Geliştiricileri, bu sözleşmeyi Barındırılan Javascript kitaplıkları sayfasındaki developers.google.com/speed/libraries/devguide
Rob Volk

10
Böyle bir HTML dosyası yerel olarak yüklenirse (doğrudan tarayıcı ile açılır) ne olur? Firefox'a benziyor (bu durumda 28) uzak kaynağı yüklemiyor. Mantıklıdır, çünkü o zaman HTTP üst protokol değildir. Ama bence bu bir dezavantaj.
Dr.Jan-Philip Gehrcke

Yanıtlar:


86

Tarayıcı RFC 1808 Kısım 4 , RFC 2396 Kısım 5.2 veya RFC 3986 Kısım 5.2'yi destekliyorsa , "//" ile başlayan başvurular için gerçekten sayfa URL'sinin şemasını kullanır.


8
bu tüm büyük tarayıcılarda destekleniyor mu? (IE7, IE8, FF, Krom, Safari)
Rob Volk

22
Bunu açıklayan ilk RFC'nin, RFC 1808, 15 yıl önce yazıldığı ve URL referanslarının web sitesi işlevselliğinin anahtarı olduğunu göz önünde bulundurarak, hemen hemen tüm büyük tarayıcıların bunu desteklediğini söylemek güvenli olduğunu düşünüyorum. Ancak kesin olarak bilmenin tek yolu, sadece kendiniz denemek ve ne olduğunu görmektir.
Remy Lebeau

2
Bu soru benzer bir soru soran biriyle bağlantılıydı ve bir yıl önce RFC 1630'da buldum (farklı ifade edildi, ancak yine de söz konusu formata izin veriyor). ftp://info.cern.ch/pub/www/doc/http-spec.txtHerkesin bir arşiv kopyası olması durumunda, 1991'de başlarken belgenin bir formunda veya başka bir formunda olabilirdi .
Jon Hanna

4
"2014.12.17: Artık SSL herkes için teşvik edildiğinden ve performans kaygıları olmadığına göre, bu teknik artık bir anti-kalıptır. İhtiyacınız olan varlık SSL'de mevcutsa, her zaman https: // varlığı kullanın." (alıntı alıntı stackoverflow.com/a/27999789 )
joonas.fi

@ joonas.fi Bu akıl yürütme sophomoric'tir. SSL'nin hala performans etkileri vardır ve çok sayıda uygulamada gereksizdir. Kullanmayı tercih ederim, elbette, ama örneğin dağıttığım kodda zorunlu kılmak istemem.
Otheus

64

Üzerinde kullanıldığında link veya@import , IE7 / IE8 dosyayı http://paulirish.com/2010/the-protocol-relative-url/

2014'ten güncelleme:

Artık SSL herkes için teşvik edildiğinden ve performans kaygıları olmadığından , bu teknik artık bir anti-kalıptır . İhtiyacınız olan varlık SSL'de varsa, her zamanhttps:// varlığı kullanın .


18
IE9, FWIW ile düzeltildi.
EricLaw

@EricLaw, oluşturma modundan bağımsız olarak IE9'da mı, yoksa yalnızca Standartlar Modunda mı ve Quirks Modunda hala bozuk mu?
scunliffe

Bunun ileriye dönük tarayıcıdaki tüm modlarda düzeltildiğinden neredeyse eminim. Başka bir yerde gördün mü?
EricLaw

SSL kesinlikle yok bir performans etkisi vardır. EFF, sunucu-sunucu arayüzleri yazmaz ve diğer sitenin çok az teknik deneyimi vardır. Ayrıca, bir web sitesi satıcısının bu tür kısıtlamaları uygulayacağını varsaymak bir anti-modeldir. Bu nedenle, insanlar CSS yazıyor ve javascript uygulamaları protokol sorusu üzerine banka olmamalıdır.
Otheus

63

URL'leriniz bir web sayfasının içeriği dışında görüntüleniyorsa bir dezavantaj oluşur. Örneğin, bir e-posta istemcisinde (örneğin, Outlook) oturan bir e-posta iletisinin etkili bir şekilde URL'si yoktur ve protokole bağlı bir URL içeren bir iletiyi görüntülerken, belirgin bir protokol bağlamı yoktur (iletinin kendisi bağımsızdır) POP3, IMAP, Exchange, uucp veya başka bir yöntem olsun) onu almak için kullanılan protokolün URL'si). Eksik bir protokol işleyicisi ile sunulduğunda ne yaptıklarını görmek için e-posta istemcileri ile uyumluluğunu araştırmadım - çoğu http'de bir tahmin alacak tahmin ediyorum. Apple Mail, protokol olmadan bir URL girmenize izin vermez. Benzer şekilde eksik bir bağlam nedeniyle göreli URL'lerin e-postada çalışma biçimine benzer.

Benzer sorunlar, tweet'ler, SMS mesajları, Word belgeleri vb.Gibi HTTP olmayan diğer bağlamlarda da ortaya çıkabilir.

Daha genel bir açıklama, anonim protokol URL'lerinin tek başına çalışamayacağıdır; Orada gereken ilgili bir bağlam olması. Tipik bir web sayfasında bir komut dosyası kitaplığını bu şekilde çekmek iyidir, ancak tüm harici bağlantılar her zaman bir protokol belirtmelidir. Basit bir test denedim: denediğim tüm tarayıcılarda //stackoverflow.comeşleştirildi file:///stackoverflow.com, bu yüzden gerçekten kendi başlarına çalışmıyorlar.


5
Bu gerçekten iyi bir nokta, dün gece uyurken aslında bunu düşünüyordum. Başka bir sorun, httpsveya httpsürüm aslında mevcut olmayabilir, her zaman olduğunu varsayamazsınız.
Wesley Murch

1
Bir tarayıcının dışında, tek başınasınız. E-posta veya diğer müşteri javascript veya css vb hakkında biliyorsa hiçbir söz yoktur. Yani bu hemen hemen göreli URL'ler hakkında tartışmalı bir nokta mı?
chris

Tartışma noktası değil. Birçok e-posta istemcisi JS'yi destekler ve yükleme sırasında tarayıcılar kesinlikle yapabilir file://. Küçük bir usecase, ancak ortaya çıktığında önemlidir.
Jun-Dai Bates-Kobashigawa

Geçerli URL https olmadığı sürece http kullanmak belirtmek için bir yol olsaydı , bu durumda geçerli sayfaların yüklü olduğu aynı protokolü kullanmak yerine, https kullanın , yani etkili olan nedir //.
Jun-Dai Bates-Kobashigawa

2
Örneğin belirtirseniz <base href="https://www.google.com">, içeriği web tarafı dışında görüntüleyebilirsiniz. ya <img src="//www.google.com/images/srpr/logo11w.png">da<img src="images/srpr/logo11w.png">
zig

3

Bunun nedeni taşınabilir web sayfaları sağlamak olabilir. Dış sayfa şifreli (http) taşınmazsa, bağlantılı komut dosyaları neden şifrelenmelidir? Bu gereksiz bir performans kaybı gibi görünüyor. Dış sayfanın şifreli (https) güvenli bir şekilde taşınması durumunda, bağlı içerik de şifrelenmelidir. Sayfa şifreli ise, bağlı içerik değil, IE Karışık İçerik uyarısı veriyor gibi görünüyor . Bunun nedeni, bir saldırganın komut dosyalarını yoldan değiştirebilmesidir. Bkz. Http://ie.microsoft.com/testdrive/Browser/MixedContent/Default.html?o=1 uzun bir tartışma için .

HTTPS Everywhere EFF'den, kampanya mümkünse https kullanmayı önerir. Bu günlerde her zaman şifrelenmiş web sayfaları sunmak için sunucu kapasitemiz var.



-2

Şimdi oldukça yaygın bir teknik gibi görünüyor. Hiçbir dezavantajı yoktur, yalnızca sayfadaki tüm varlıklar için protokolün birleştirilmesine yardımcı olur, bu nedenle mümkün olan yerlerde kullanılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.