Усі статті
2 хв читання#agents#images#api

Як поставити фото на сторінку, коли є лише URL

Сторінка, яка тягне картинку з чужого сервера, — це сторінка з чужим трекінг-пікселем.

Чому не приймати просто URL

Бо поле картинки, що приймає адресу, — це діра. Спрямуйте його на чужий хост, і браузер кожного відвідувача повідомить про себе цьому хосту — на сервісі, чия сторінка про приватність обіцяє повну відсутність сторонніх запитів. Те саме поле витекло б неекранованим у CSS-тло, а це окремий клас проблем.

Тому поля картинок приймають рівно одну форму: ключ сховища, виданий нашим же роутом завантаження. Щоб його отримати, надішліть адресу на ендпоїнт завантаження в JSON із видом avatar, background або card. Сервер завантажить файл, перевірить, перекодує й поверне ключ, який ви збережете в сторінку, як будь-яке інше поле.

  1. Завантаження за URL, отримання ключа, патч сторінки цим ключем. Три кроки — або один, якщо передати адресу фотографії при створенні.
  2. Завантажуються лише публічні адреси: усе, що розв’язується в приватну чи локальну адресу, відхиляється — і до редиректів, і після.
  3. Обмеження за розміром стосуються джерела: вісім мегабайтів для аватарів і карток, тридцять для тла.
  4. У відповіді приходять ще й вага з розмірами після обробки, що зручно, коли треба відзвітувати про зроблене.

Що відбувається з байтами

  • Усе перекодовується. Файл, який ми віддаємо, ніколи не дорівнює файлу, який ви надіслали.
  • EXIF викидається, і це важливо: телефонні фотографії несуть координати GPS.
  • Розміри й вага обмежуються за видами, щоб сторінка з шістьма картинками відкривалася на мобільному інтернеті.
  • HEIC з iPhone декодується на сервері, конвертувати заздалегідь не потрібно.

Точки кадрування і помилка, якої варто уникнути

Шаблони ріжуть: коло для фото, на весь екран для тла, смуга для картки. У кожного поля картинки є парна точка у відсотках, і від неї залежить, обличчя в кадрі чи груди. При створенні точку можна передати разом із фотографією; потім це ще одне поле в оновленні, а MCP-інструмент, що ставить фото, приймає її аргументом.

Помилка, яку варто назвати: використовувати адресу CDN Instagram так, ніби вона постійна. Ці URL підписані й спливають за лічені дні. Переносьте байти одразу — саме це й робить завантаження за URL, — інакше аватар тихо зламається через тиждень після передачі сторінки.

Читати далі