Атрибут crossorigin тега <img>
Описание
Атрибут crossorigin указывает, должен ли элемент <img> запрашивать изображение с использованием CORS (Cross-Origin Resource Sharing). Это важно при работе с изображениями на других доменах, особенно при использовании canvas.
<img
src="https://example.com/image.jpg"
crossorigin="anonymous"
alt="Пример изображения с другого домена">
Доступные значения:
| Значение | Описание | Когда использовать |
|---|---|---|
anonymous |
Запрос CORS без credentials | Для общедоступных изображений |
use-credentials |
Запрос CORS с credentials (cookies, HTTP-аутентификация) | Для защищенных изображений, требующих аутентификации |
| не указан | CORS не используется | Когда не требуется доступ к пиксельным данным |
Пример с Canvas:
<canvas id="myCanvas" width="300" height="150"></canvas>
<script>
const img = new Image();
img.crossOrigin = 'Anonymous';
img.src = 'https://example.com/image.jpg';
img.onload = function() {
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
};
</script>
Рекомендации по использованию:
- Используйте для изображений, которые будут обрабатываться в canvas
- Требуется правильная настройка CORS на сервере
- Для
use-credentialsсервер должен разрешать запросы с credentials - Без атрибута canvas выбросит исключение "tainted canvas"
Ошибки и отладка:
<img id="corsImage" src="https://other-domain.com/image.jpg" crossorigin>
<script>
document.getElementById('corsImage').onerror = function() {
console.error('Ошибка загрузки изображения:', this.src);
// Проверьте заголовки Access-Control-Allow-Origin на сервере
};
</script>
Серверная конфигурация (пример для Apache):
# В .htaccess или конфигурации сервера
<IfModule mod_headers.c>
<FilesMatch "\.(jpg|jpeg|png|gif)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
Ограничения и совместимость:
- Поддерживается всеми современными браузерами
- Сервер должен отправлять правильные CORS-заголовки
- Для
use-credentialsнельзя использовать*в Access-Control-Allow-Origin - Не влияет на обычное отображение изображений (без canvas)
Примечание: Атрибут crossorigin особенно важен для веб-приложений, которые обрабатывают изображения через canvas или WebGL. Всегда проверяйте, что сервер правильно настроен для CORS-запросов, иначе изображения не будут загружаться.