必要な<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
こんにちは、ようこそ 
サーバーがリクエストをブロックしていないか確認していただけますか? 私が見るところでは、エラーコードとして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
system
(system)
クローズされました:
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.