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工具的使用具体解释

Android学习之Android studio TraceView和lint工具的使用详解

android -------- Lint优化工具

代码静态分析工具PC-LINT安装配置

go lint 工具范围关闭检测