Facebook Debugger lint 工具获取 HTTP 206 - 未检测到 Open Graph 元标记(其他工具可以)
Posted
技术标签:
【中文标题】Facebook Debugger lint 工具获取 HTTP 206 - 未检测到 Open Graph 元标记(其他工具可以)【英文标题】:Facebook Debugger lint tool gets HTTP 206 - doesn't detect Open Graph meta tags (others tools do) 【发布时间】:2012-01-19 12:31:41 【问题描述】:我相信我的网站对 Facebook 和 Open Graph 元标记有正确的标记。但检查 Facebook 的 linter 表明没有检测到任何标签。您可以在这里亲自查看:
http://developers.facebook.com/tools/debug/og/object?q=goodloesolitaire.com
当我使用不同的网站时,会找到标签:
http://www.opengraph.in/?url=goodloesolitaire.com&format=html
我经历了类似的问题,但没有一个检查出来。关于为什么 Facebook 的调试器可能什么都看不到的任何想法?
【问题讨论】:
【参考方案1】:Facebook 看到的是 HTTP 代码 206“部分内容”,而不是正常的 200“OK”。
206“部分内容”:如果客户端有 其缓存中内容的部分副本以及丢失的请求和更新 内容。此消息表明部分请求成功。
我发现了一篇关于它的旧论坛帖子:http://forum.developers.facebook.net/viewtopic.php?id=68440
看起来这可能是与缓存有关的服务器配置问题。你在你的服务器上运行 Varnish 或类似的东西吗?签到。
要尝试的另一件事可能是将您的字符集元标记移动到您的 Open Graph 标记下方,以便 Facebook 知道正确的编码来解析它们。此外,使用这种类型标签可能会更好:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
最后,确保您没有任何东西阻止 Facebook 抓取工具用户代理。正如他们的documentation:
我们的机器人与用户代理“facebookexternalhit/*”一起运行。制作 确保您没有阻止该用户代理。另外,确保 Facebook 的 服务器可以访问您的服务器。
【讨论】:
206 是一个线索。原来是 Connect 中间件框架的问题。它根据请求的范围而不是正文大小设置 Content-Length。 如果它有助于解决您的问题,您可能希望接受此答案。【参考方案2】:如果您使用 Varnish:
放
if (req.http.user-agent ~ "facebookexternalhit")
return(pipe);
在你的sub vcl_recv
:
sub vcl_recv
效果很好。
【讨论】:
【参考方案3】:我们使用 Varnish,所以这对我们有用:
if (req.http.user-agent ~ "facebookexternalhit")
return(pipe);
https://www.varnish-cache.org/lists/pipermail/varnish-misc/2011-February/020060.html
【讨论】:
以上是关于Facebook Debugger lint 工具获取 HTTP 206 - 未检测到 Open Graph 元标记(其他工具可以)的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 电子邮件字段返回 null(即使设置并接受了“电子邮件”权限)
Android学习之Android studio TraceView和lint工具的使用具体解释