I tried all answers above and nothing worked. Actually, we need 3 steps from above answers together to make it work:
As suggested by Flavio; add CORS configuration on your bucket:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
On the image; mention crossorigin:
<img href="abc.jpg" crossorigin="anonymous">
Are you using a CDN? If everything works fine connecting to origin server but NOT via CDN; it means you need some setting on your CDN like accept CORS headers. Exact setting depends on which CDN you are using.