Как работает html тэг img с политикой cors?

Объясните максимально подробно. К примеру, у нас есть сервер без cors заголовков. Если мы попытаемся сделать простой cors get запрос на получение изображения для дальнейшей работы с ним в бинарном виде, то наш body будет пустым, так как content-type по спецификации не может быть, к примеру, image/png. Собственно, вопрос: как в этом плане тэг img получает данные в атрибуте src и отображает изображение?

p.s. поправьте где не прав


Ответы (1 шт):

Автор решения: vp_arth

Основная задача CORS - запрет получения результата запроса с вашего сайта на другой, используя его куки.
Без него, вы бы, скажем, могли бы читать мои личные сообщения в vk(пока я в нём залогинен), если бы я зашёл на ваш сайт)

С картинками эта проблема тоже присутствует. Теоретически, вы могли бы выкачать через свой сайт фото из моего закрытого альбома, только придётся подобрать точные URI =)

Но отображать чужие картинки нужно(не заставлять же всех всё хранить у себя), поэтому придумали другое решение.
Единственная возможность получить данные с картинки - предварительно скопировать его на canvas. Если при этом сервер не предоставил CORS разрешений, при любой попытке прочитать данные с этого «испорченного» canvas вы получите SecurityError.

Собственно, вопрос: как в этом плане тэг img получает данные в атрибуте src и отображает изображение?

Берёт, получает и отображает. Политики безопасности применяются только к попыткам пользоватьских скриптов получить данные с картинки. Можно провести аналогию с iframe — показать можно, что-то сделать внутри нельзя.

→ Ссылка