Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable third-party cookie for <img> tags?

Is there any solution to disable cookies for images loaded from third-party domains using HTML5 or JavaScript techniques?

I'm looking for something similar to sandbox attribute for <iframe> tag, referrerpolicy or crossorigin attributes for <img> tag.

like image 803
Valentin Podkamennyi Avatar asked Jul 27 '18 01:07

Valentin Podkamennyi


People also ask

How do I make IMG tags disabled?

Using jQuery, you can either hide the image : $("#hrefId"). hide() or add a CSS class that would style it as being disabled : $("#hrefId"). addClass("disabled") ...

How do I block an iframe cookie?

To block third-party cookies set with iframe (like YouTube videos), find an iframe code that is setting third-party cookies and: change src attribute name to data-src. add data-cookiescript attribute and set it to accepted.

How do I disable cookies in HTML?

Try below code: cookieExpire = new Date(); cookieExpire. setMonth(cookieExpire. getMonth() + 10);


1 Answers

Update: This workaround no longer works for:

  • Firefox 68
  • Safari 12.1.2

After several days of challenge with this issue, I can confirm this can not be done using the <img> tag and any currently available techniques.

The right way is to use cookieless proxy server for images like Google does, but this is too resource intensive for us at this moment.

Acceptable workaround:

  • To disable cookie replace <img> with <iframesandbox>;
  • To display image inside <iframe> use Data URI with inline CSS;
  • To emulate <img> tag sizing behavior use CSS background-size: cover which scales the image, this allows to set width and height to the <iframe> which applies to the inner image;
  • Use ARIA attributes to specify role="img" and aria-label as alt replacement.

Example:

<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>
like image 122
Valentin Podkamennyi Avatar answered Sep 25 '22 06:09

Valentin Podkamennyi