HTML でのプロトコル相対 URL の使用に関する既存の議論 [1] がありますが、電子メールはどうでしょうか?
電子メール クライアント、または Gmail などのサービス プロバイダーは、HTML 電子メールで使用される場合、プロトコルの相対 URL を削除または変更しますか?
HTML でのプロトコル相対 URL の使用に関する既存の議論 [1] がありますが、電子メールはどうでしょうか?
電子メール クライアント、または Gmail などのサービス プロバイダーは、HTML 電子メールで使用される場合、プロトコルの相対 URL を削除または変更しますか?
次の内容のメールを Gmail 経由で送信しました。
<a href="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">link</a>
そしてそれは無修正で受け取られました。リンクを右クリックしてリンク アドレスをコピーすると、Chrome が先頭https:
に追加しました (Gmail はセキュア HTTP を使用しているため)。しかし、要素の HTML を調べると、<a>
私が書いたとおりのタグが表示されました。
メール サーバーがメールの内容を変更することは正常ではありません。
プロトコルを省略することは、Web ブラウザーが同じコンテンツの安全なバージョンと安全でないバージョンのどちらかを選択できるようにすることを目的としています。https 経由でページをロードし、その中に src が http で始まる画像が含まれている場合、ブラウザーは、安全でないコンテンツをロードするのは危険であるという警告をユーザーに表示します。http 経由でページをロードし、そのページに https で始まる src を持つ画像が含まれている場合、他の非効率性の中でもキャッシングが妨げられます。
妥協点は、コンテンツをロードするページと一致するセキュリティでブラウザがコンテンツをロードできるようにすることです。安全でないページの効率。安全なページのセキュリティを完全に保証します。
しかし、電子メール クライアントは埋め込みコンテンツ (画像、スクリプトなど) について常に警告するため、プロトコルを省略してもメリットはありません。
さらに、ブラウザ以外の電子メール クライアントには、そもそもプロトコルがありません。情報をダウンロードし、ディスクからロードします。電子メール クライアントが、電子メールを読み込んだときのセキュリティ レベルで埋め込みコンテンツを読み込むことを本当に選択できるようにしたい場合は、クライアントが同じコンピューターで情報を検索できるようにします。(彼らは実際に//
手段を想定してそれを行いますfile:///
。)
//
では、電子メールに URIを入れても安全でしょうか? 意味がないと思います。したがって、ブラウザ以外のクライアントがそれを処理するための標準的な方法はありません。つまり、未定義の動作を見ています。
URI によって識別される情報の機密性に基づいてプロトコルを選択することをお勧めします。独自の財務データのグラフですか? https を使用します。ロルキャットですか?http を使用します。
いいえ、電子メールでプロトコルの相対 URL を使用するのは安全ではありません。プロトコルを変更して、ブラウザがサイトが使用するように指示しているプロトコルからリソースを取得できるようにするためです。
ただし、一部の電子メール クライアント (特に Outlook) はプロトコルとして HTTP または HTTPS を使用しようとしません。代わりに、file:// プロトコルを使用し、参照しているリソースがローカル マシン上にあると想定します。しかし、そうではありません。したがって、これらを電子メールで使用しないでください。リクエスト元のサーバーが、HTTP と HTTPS の両方でコンテンツを提供できることを確認する必要があります。そうしないと、セキュリティで保護されていない、または存在しないサーバー ポートからコンテンツを取得することになる可能性があります。
IE6 はこれを処理する方法を知りません。Internet Explorer 6 のサポートに関心がある場合は、これらを使用しないでください。
IE7-8 はプロトコルの相対 URL をサポートしていますが、リソースを 2 回フェッチすることになります。HTTP から 1 回、HTTPS 経由で 1 回。これにより、処理が少し遅くなる可能性がありますが、IE7-8 を使用している場合を除いて、大きな問題はありません。IE を使用している場合は、もっと重要なことを心配する必要があります。
ブラウザに依存するため、GMAIL を使用しているブラウザに依存しますが、Chrome では正常に動作しますが、IE6 では動作しません。