Проблема с oneboxing изображения с конкретного домена

Может, кто-нибудь сможет прояснить, что здесь происходит? :thinking:

У меня есть два изображения. Они идентичны. Единственное различие — доменное имя.

Одно изображение отказывается создавать onebox на моём Discourse версии 3.3.0.beta2-dev (7a083daf27), а другое создаёт onebox без каких-либо проблем.

Первое изображение: https://dronescene.co.uk/images/uploads/temporiginal/test11.png

Второе изображение: https://dev.dronescene.co.uk/images/uploads/temporiginal/test11.png

Пока я пытался понять, в чём может быть проблема, я заметил, что в URL onebox добавляется несколько дополнительных параметров в конце:

Хотя, думаю, это красная селедка :thinking:

Если я открою оба изображения напрямую в новой вкладке браузера и посмотрю заголовки HTTP-ответа во вкладке Network консоли браузера, я не вижу никаких различий между ними.

В логах моего Discourse ошибок нет.

Возможно, я применил какие-то специфичные для домена настройки в Discourse, о которых давно забыл? :thinking:

Что ещё может заставить Onebox возвращать HTTP/404, хотя изображение на самом деле существует? :thinking:

С чего мне начать отладку, чтобы понять, почему один URL работает, а другой — нет? :thinking:

Если это важно, оба домена проксируются через Cloudflare, но настройки там тоже полностью идентичны.

Разве одна из основных функций Cloudflare — блокировать ботов от запроса файлов с вашего сайта? Похоже, всё работает как задумано :laughing:

Вам стоит проверить конфигурацию Cloudflare — там должна быть возможность отключить защиту от ботов.

Действительно? :thinking:

В чём разница? :thinking:

IP-адрес сервера Discourse добавлен в белый список Cloudflare, и я могу загрузить оба изображения с помощью curl/wget из командной строки сервера, на котором запущен Discourse.

Не могу понять, почему onebox работает для одного изображения, но не работает для другого.

Так как вы контролируете оба сервера, проверьте, какой именно запрос отправляется — включая метод, user-agent и другие заголовки, — и попробуйте воспроизвести его с помощью cURL, имитирующего этот запрос.

Ах, отличная идея :+1: