Как работает html тэг img с политикой cors?
Объясните максимально подробно. К примеру, у нас есть сервер без cors заголовков. Если мы попытаемся сделать простой cors get запрос на получение изображения для дальнейшей работы с ним в бинарном виде, то наш body будет пустым, так как content-type по спецификации не может быть, к примеру, image/png. Собственно, вопрос: как в этом плане тэг img получает данные в атрибуте src и отображает изображение?
p.s. поправьте где не прав
Ответы (1 шт):
Основная задача CORS - запрет получения результата запроса с вашего сайта на другой, используя его куки.
Без него, вы бы, скажем, могли бы читать мои личные сообщения в vk(пока я в нём залогинен), если бы я зашёл на ваш сайт)
С картинками эта проблема тоже присутствует. Теоретически, вы могли бы выкачать через свой сайт фото из моего закрытого альбома, только придётся подобрать точные URI =)
Но отображать чужие картинки нужно(не заставлять же всех всё хранить у себя), поэтому придумали другое решение.
Единственная возможность получить данные с картинки - предварительно скопировать его на canvas. Если при этом сервер не предоставил CORS разрешений, при любой попытке прочитать данные с этого «испорченного» canvas вы получите SecurityError.
Собственно, вопрос: как в этом плане тэг img получает данные в атрибуте src и отображает изображение?
Берёт, получает и отображает. Политики безопасности применяются только к попыткам пользоватьских скриптов получить данные с картинки. Можно провести аналогию с iframe — показать можно, что-то сделать внутри нельзя.