Samsung está utilizando Akamai Image Manager para servir estos archivos.
Si envío una cabecera Accept con image/jpeg,image/gif, devuelve image/jpeg, como era de esperar.
wget --header="Accept: image/jpeg,image/gif" http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
--2020-11-13 11:43:58-- http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
Resolviendo image-us.samsung.com (image-us.samsung.com)... 23.217.144.69
Conectando con image-us.samsung.com (image-us.samsung.com)|23.217.144.69|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: 83094 (81K) [image/jpeg]
Guardando en: ‘samsung-logo-191-1.jpg.6’
Discourse intenta descargar la imagen llamando a FileHelper.download, que llama a FinalDestination.get, el cual finalmente solicita el archivo con un UserAgent de:
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Por lo tanto, si solicitamos la misma imagen con la misma cabecera Accept que antes, pero añadiendo ese agente de usuario, obtenemos:
wget --header="Accept: image/jpeg,image/gif" --header="User-Agent: Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
--2020-11-13 11:52:50-- http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
Resolviendo image-us.samsung.com (image-us.samsung.com)... 23.217.144.69
Conectando con image-us.samsung.com (image-us.samsung.com)|23.217.144.69|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: 45540 (44K) [image/webp]
Guardando en: ‘samsung-logo-191-1.jpg.10’
Y devuelve image/webp. Parece que están ignorando la cabecera Accept y utilizando su propia lógica para determinar el mejor tipo de archivo según el agente de usuario.
Históricamente, Apple no ha soportado WebP, así que probemos eso:
wget --header="Accept: image/jpeg,image/gif" --header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15" http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
--2020-11-13 12:27:02-- http://image-us.samsung.com/SamsungUS/home/samsung-logo-191-1.jpg
Resolviendo image-us.samsung.com (image-us.samsung.com)... 23.217.144.69
Conectando con image-us.samsung.com (image-us.samsung.com)|23.217.144.69|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: 83094 (81K) [image/jpeg]
Guardando en: ‘samsung-logo-191-1.jpg.16’
¡Éxito!
Creo que se puede argumentar con bastante firmeza que el servidor web siempre debería respetar la cabecera Accept y no intentar ser más listo que ella. Por otro lado, alguien podría argumentar que si presentas una cadena específica de agente de usuario, deberías estar preparado para actuar como ese agente de usuario (aunque la suplantación de agente de usuario no es infrecuente y tiene diversos usos).
Como resultado, Apple ha añadido soporte para WebP en iOS 14 (lanzado recientemente) y macOS Big Sur (lanzado ayer), por lo que probablemente deberíamos soportarlo (añadiéndolo como una extensión permitida por defecto) y configurando ImageMagick para que lo soporte (lo cual introducirá una dependencia de libwebp o similar) para poder optimizar y redimensionar, etc.