0

私はサイトhttp://Meer.liを作成していますが、Facebookデバッガーを介して実行すると-http://developers.facebook.com/tools/debug/og/object?q= meer.li-できません私のメタタグを見つけてください。

フェイスブックが削ったもののソースを見ると、それは私のサイトの簡略版を示しており、ドキュメントタイプが変更されており、メタタグはありません-http ://developers.facebook.com/tools/debug/og /echo?q=http%3A%2F%2Fmeer.li%2F

私はここで何が間違っているのですか?

私はrails3.2、ruby 1.9.3を実行しており、すべてがmongoデータベースを使用してHerokuで実行されています。

編集

私のアプリには正しいacceptヘッダーがあるようです...これを別のビューで行うと:

<%= request.headers["Accept"] %>

私は得る:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

curl -Hと正しいヘッダーを実行すると、なぜサイト全体をスクレイプできるのでしょうか。Facebookが私のサイトをこすらないのはなぜですか?

4

1 に答える 1

2

デバッガーでURLを試してみると、応答ステータスコードは206であり、これは「部分的なコンテンツ」を意味します。

URLをカールさせようとしましたが、実際に得られた応答は部分的であり、html、head、bodyタグ(またはそれらの終了タグ)が含まれておらず、htmlのjsonp応答がラップされているように見えます

$("#designs_content").append

なぜそれが起こるのかわかりません、多分あなたのサーバーはそれに応じてリクエストとレスポンスのユーザーエージェント文字列をチェックしますか?


編集

これがHerokuと関係があるかどうかはわかりませんが、私は彼らと一緒に仕事をしたことがありません。また、私はレールについて何も知らないので、それを手伝うことはできません。

Wgetはこれとは何の関係もありません。これは、httpリクエストのヘッダーに基づいてWebサーバーが返す応答です。ブラウザを使用してリクエストを行うと、サーバーがいくつかのことを理解できるように、リクエストにいくつかのヘッダーが追加されます。送信されたヘッダーは、firebugまたは開発者ツールをchrome(safariなど)で開くか、[ネットワーク]タブ(すべてにあります)で開くか、ネットワークスニファを使用して表示できます。

あなたの生活を楽にするために、私はあなたのためにこの問題を引き起こしているヘッダーが何であるかをチェックしました...これを試してください:

curl "http://meer.li/"

そして、応答がhtmlページ全体ではなくjsonpのものであることがわかります。今これを試してみてください:

curl -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "http://meer.li/"

そして、あなたはあなたのページの完全なhtmlバージョンを手に入れるでしょう。

Facebookは、ページを廃棄するときに「accept」ヘッダーを送信しないため、ブラウザーを使用してソースを表示したときに表示される応答とは異なります。

これは確かに特定の設定に関するものなので、どうすれば解決できるかわかりませんが、少なくとも問題が何であるかはわかっています。

于 2012-05-13T14:44:27.767 に答える