Oneboxプレビューがサイトで機能しません

必要な<meta> OpenGraphタグを追加したサイトがあるのですが、Oneboxのプレビューが表示されません。OpenGraphの検証はパスしているので、マークアップの問題ではないと思います。

(新しいユーザーなので、バリデーターへのリンクを投稿できません)

サーバー側では、Discourseロボットにページを提供していることが確認できます。

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

しかし、リンクが表示されません。

このスレッドに基づき、HEADリクエストに対して505 HTTP Version Not Supportedを返すことが問題であると考え、サーバーをパッチしてHEADメソッドに対して形式的な200 OK応答を返すようにしました。


> 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

しかし、これでもまだ機能していません。

「いいね!」 1

こんにちは、ようこそ :wave:

サーバーがリクエストをブロックしていないか確認していただけますか? 私が見るところでは、エラーコードとして400(Discourseのfetchレスポンスを見たとき)を取得しています。

「いいね!」 2

わかりました。サイトを HEAD リクエストを GET リクエストと同一に扱うように再設定しました。

サイトには、クライアントが \"Discourse Forum Onebox\" で始まるユーザーエージェント文字列と Accept-Language: * ヘッダーを送信しない限り 400 を返すセキュリティポリシーがあります。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 が返されています。

直接レスポンスを確認する方法はないと思いますが、コードに直接デバッグログを追加しました。

「いいね!」 1

ああ、それでした。Accept-Language ヘッダーにフィルターがかかっており、ボットはすべてのリクエストでそれを送信していませんでした。本当にありがとうございます!

「いいね!」 3

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