HTML5またはJavaScript技術を使用してサードパーティのドメインからロードされた画像のCookieを無効にする解決策はありますか?
sandbox
<iframe>
タグの属性、 referrerpolicy
または crossorigin
<img>
タグの属性に似たものを探しています。
更新:この回避策は、以下に対しては機能しません。
この問題に数日間挑戦した後、<img>
タグと現在利用可能なテクニックを使用してこれを実行できないことを確認できます。
正しい方法は、Googleのように画像にcookielessプロキシサーバーを使用することですが、現時点ではこれはリソースを大量に消費します。
許容できる回避策:
<img>
を<iframe
sandbox
>
に置き換えます。<iframe>
内に画像を表示するには、インラインCSSで Data URI を使用します。<img>
タグのサイズ変更動作をエミュレートするには、CSS background-size: cover
を使用して画像を拡大縮小します。これにより、幅と高さを内部画像に適用される<iframe>
に設定できます。alt
の代わりにrole="img"
およびaria-label
を指定します。例:
<img width="100" height="75" alt="About company"
src="https://www.dtm.io/wp-content/uploads/2018/04/datamart-company.png" />
<iframe width="100" height="75" aria-label="About company" role="img"
frameborder="0" sandbox
src="data:text/html,<style>body{background:url('https://www.dtm.io/wp-content/uploads/2018/04/datamart-company.png') center/cover no-repeat;padding:0;margin:0;overflow:hidden}</style>"></iframe>
これはほとんどの場合オプションではありませんが、サードパーティのイメージがAccess-Control-Allow-Origin
またはホストを含む*
ヘッダーで提供されている場合、crossorigin="anonymous"
属性を使用してCookieを無効にすることができます。これらの場合、プライバシーを強化するためにreferrerpolicy="no-referrer"
も含める必要があります。
<img
src="https://graph.facebook.com/officialstackoverflow/picture"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
ほとんどのWebサイトはこのヘッダーを設定しないため、別のヘッダーを見つける必要があります。しかし、FacebookのAPIなど一部の機能はあり、これがそのような場合の最も簡単なソリューションです。
理想的なソリューションではありませんが、iframeを使用して画像をロードし、cssトリックを使用してiframeをマスクできる場合があります。
<iframe class="img-frame" sandbox src="https://www.google.com/favicon.ico" />
そうでなければ、クッキーを削除する純粋なHTMLの方法を知りません。 iframeのcorsポリシーがそれを妨げている場合、JSを使用して親からiframe Cookieを変更できるとは思いません。