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

**URL:** https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410
**Category:** Support
**Tags:** onebox
**Created:** [23.Февраль.2024 00:47:04 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410 "2024-02-23T00:47:04Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![taylorswift](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taylorswift/32/365151_2.png) [@taylorswift](https://meta.discourse.org/u/taylorswift)
#### Post date: [23.Февраль.2024 00:47:04 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/1 "2024-02-23T00:47:04Z")

</div>

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

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

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

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

```

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

> **[Authenticate with GitHub](https://swiftinit.org/docs/swift/swift/arrayslice)**
>
> No overview available

Я предположил, что проблема может быть в том, что мы возвращаем 505 HTTP Version Not Supported для запросов `HEAD`, основываясь на [этой теме](https://meta.discourse.org/t/new-blog-wont-onebox/184448/10). Поэтому я исправил наш сервер, чтобы он возвращал формальный ответ 200 OK для метода `HEAD`:

```plaintext
> 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
< 

```

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

---

<div class="post-metadata">

### Author: ![Arkshine](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arkshine/32/298682_2.png) [@Arkshine](https://meta.discourse.org/u/Arkshine)
#### Post date: [23.Февраль.2024 02:04:31 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/2 "2024-02-23T02:04:31Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![taylorswift](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taylorswift/32/365151_2.png) [@taylorswift](https://meta.discourse.org/u/taylorswift)
#### Post date: [23.Февраль.2024 03:46:21 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/3 "2024-02-23T03:46:21Z")

</div>

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

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

```plaintext
$ curl -v -I --http1.1 \
    -A 'Discourse Forum Onebox v3.3.0.beta1-dev' \
    -H 'Accept-Language: *' \
    https://swiftinit.org -o /dev/null

```

```plaintext
> 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 при запросе?

---

<div class="post-metadata">

### Author: ![Arkshine](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arkshine/32/298682_2.png) [@Arkshine](https://meta.discourse.org/u/Arkshine)
#### Post date: [23.Февраль.2024 04:41:13 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/4 "2024-02-23T04:41:13Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![taylorswift](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/taylorswift/32/365151_2.png) [@taylorswift](https://meta.discourse.org/u/taylorswift)
#### Post date: [23.Февраль.2024 05:11:08 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/5 "2024-02-23T05:11:08Z")

</div>

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

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [24.Март.2024 05:12:06 UTC](https://meta.discourse.org/t/onebox-previews-are-not-working-for-my-site/296410/6 "2024-03-24T05:12:06Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
