154

外部ドメインから画像を読み込むスタイルシートがあり、現在の URL に基づいて、安全な注文ページから https:// および他のページから http:// から読み込む必要があります。URL をダブル スラッシュで始めると、現在のプロトコルが継承されることがわかりました。すべてのブラウザーがこの手法をサポートしていますか?

html 例:

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

css 例:

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

6 に答える 6

90

ブラウザがRFC1808セクション4RFC 2396セクション5.2、またはRFC 3986セクション5.2をサポートしている場合、ブラウザは実際に「//」で始まる参照にページURLのスキームを使用します。

于 2011-01-11T19:43:11.463 に答える
66

linkまたはで使用すると@import、IE7/IE8はhttp://paulirish.com/2010/the-protocol-relative-url/ごとにファイルを2回ダウンロードします。

2014年からの更新:

SSLがすべての人に推奨され、パフォーマンスの問題がなくなったため、この手法はアンチパターンになりました。必要なアセットがSSLで利用できる場合は、常にアセットを使用してhttps://ください。

于 2011-01-11T19:45:20.140 に答える
65

URLがWebページのコンテキスト外で表示される場合、1つの欠点が発生します。たとえば、電子メールクライアント(たとえば、Outlook)にある電子メールメッセージには実質的にURLがなく、プロトコル相対URLを含むメッセージを表示している場合、明確なプロトコルコンテキストはまったくありません(メッセージ自体は独立しています)。 POP3、IMAP、Exchange、uucpなど、フェッチに使用されるプロトコルの一部であるため、URLには相対的なプロトコルがありません。私は、電子メールクライアントとの互換性を調査して、欠落しているプロトコルハンドラーが提示されたときにクライアントが何をするかを調べていません。ほとんどの場合、httpで推測するでしょう。Apple Mailは、プロトコルなしでURLを入力することを拒否します。これは、同様にコンテキストが欠落しているために相対URLが電子メールで機能しない方法に類似しています。

同様の問題は、ツイート、SMSメッセージ、Word文書などの他の非HTTPコンテキストでも発生する可能性があります。

より一般的な説明は、匿名プロトコルURLを単独で機能させることはできないということです。関連するコンテキストが必要です。したがって、一般的なWebページでは、スクリプトライブラリをそのように取り込むことは問題ありませんが、外部リンクでは常にプロトコルを指定する必要があります。私は1つの簡単なテストを試しました。それは、試したすべてのブラウザーに//stackoverflow.comマップするため、実際には単独では機能しません。file:///stackoverflow.com

于 2012-10-15T15:40:35.097 に答える
1

完全を期すためだけに。これは別のスレッドで言及されました:

「2 つのスラッシュ」は、「現在使用されているプロトコルは何でも」の一般的な省略形です。

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

スレッド全体を確認してください。

于 2014-01-13T14:28:24.153 に答える
-2

今ではかなり一般的なテクニックのようです。マイナス面はありません。ページ上のすべてのアセットのプロトコルを統一するのに役立つだけなので、可能な限り使用する必要があります。

于 2014-02-21T06:47:31.337 に答える