Предварительный просмотр Onebox не работает для моего сайта

У меня есть сайт, к которому я добавил необходимые теги OpenGraph <meta>, но превью Onebox не отображается. Валидация OpenGraph проходит успешно, поэтому я сомневаюсь, что проблема в разметке.

(Я не могу отправить ссылку на валидатор, так как я новый пользователь)

На стороне сервера я вижу, что страницы действительно отдаются роботу Discourse:

User-Agent: 'Discourse Forum Onebox v3.3.0.beta1-dev'
IP Address: 2602:fd3f:3:204:0:242:ac11:2d

но ссылки просто не отображаются:

Я предположил, что проблема может быть в том, что мы возвращаем 505 HTTP Version Not Supported для запросов HEAD, основываясь на этой теме. Поэтому я исправил наш сервер, чтобы он возвращал формальный ответ 200 OK для метода HEAD:

> HEAD / HTTP/1.1
> Host: swiftinit.org
> User-Agent: curl/7.81.0
> Accept: */*
> 

< HTTP/1.1 200 OK
< host: swiftinit.org
< access-control-allow-origin: *
< content-length: 0
< content-type: text/html; charset=utf-8
< 

однако это всё ещё не работает.

Привет, добро пожаловать :wave:

Не могли бы вы проверить, не блокирует ли ваш сервер запросы? Судя по тому, что я вижу, я получаю код ошибки 400 (когда смотрю на ответ Discourse fetch).

Понятно, я перенастроил сайт так, чтобы HEAD-запросы обрабатывались так же, как GET-запросы.

На сайте действует политика безопасности, которая возвращает 400, если клиент не отправляет строку User-Agent, начинающуюся с "Discourse Forum Onebox", и заголовок Accept-Language: *. Мне удалось пройти проверку с помощью curl со следующими настройками:

$ curl -v -I --http1.1 \
    -A 'Discourse Forum Onebox v3.3.0.beta1-dev' \
    -H 'Accept-Language: *' \
    https://swiftinit.org -o /dev/null
> HEAD / HTTP/1.1
> Host: swiftinit.org
> User-Agent: Discourse Forum Onebox v3.3.0.beta1-dev
> Accept: */*
> Accept-Language: *
> 

< HTTP/1.1 200 OK
< host: swiftinit.org
< link: <https://swiftinit.org/>; rel="canonical"
< etag: "8898806577480f6f7e5241ff270a9201"
< access-control-allow-origin: *
< content-length: 18933
< content-type: text/html; charset=utf-8
< 

Есть ли способ увидеть ответ от Discourse при запросе?

Судя по всему, это GET-запрос, и передается только заголовок User-Agent. В данный момент он возвращает ошибку Bad Request.

Я не думаю, что есть прямой способ увидеть ответ; я добавил некоторые логи отладки прямо в код.

А, вот оно что! Там был фильтр по заголовку Accept-Language, который бот не отправляет со всеми запросами. Большое спасибо!