使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

使用Cloudfront和Lambda@Edge遇到Twitter和LinkedIn元标签问题

0

【以下的问题经过翻译处理】 我正在使用Lambda@Edge函数(在源请求触发)来更改托管在S3和Cloudfront上的react网站的元标签,以实现丰富的社交分享。它可以完美地用于Facebook,但对Twitter或LinkedIn无效。

LinkedIn的错误(来自其帖子检查器):

*We encountered a server error while trying to inspect the URL. *(URL Redirect Trail) 500 Failure

Twitter卡验证器错误:

1.INFO: Page fetched successfully 2.INFO: 11 metatags were found 3.ERROR: No card found (Card error)

我认为我的标签实际上是正确的,例如Facebook的共享调试器显示其看到的内容:

<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:site" content="@myTwitter">
<meta name="twitter:creator" content="@myTwitter">
<meta name="description" content="My amazing content">
<meta property="og:image" content="https://mys3bucket.s3.amazonaws.com/static/media/myImage.19c87b8d.jpg">
<meta property="og:title" content="My amazing title">
<meta property="og:description" content="My amazing content">
<meta property="og:url" content="https://example.com/whatever/mypage">
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta name="author" content="me">

我的问题是-Cloudfront是否是问题所在,即它是否会阻止Twitterbot / LinkedIn如何做到这一点?我运行了以下命令:

curl -A TwitterBot https://www.example.com

它会返回带有正确标记的html,所以我不确定。

另外,如果我关闭 Lambda@Edge,只在 index.html 中硬编码标签,Twitter 和 LinkedIn 分享也能正常工作。

在 AWS 文档中,我看不到任何允许 Twitter/LinkedIn 机器人的说明。

任何帮助都将不胜感激!

profile picture
专家
已提问 1 年前28 查看次数
1 回答
0

【以下的回答经过翻译处理】 可能是 CloudFront 导致了 Twitter 和 LinkedIn 上的社交共享问题。

当向 CloudFront 发出请求时,它会先检查缓存是否有响应,然后再将请求转发给源。如果找到缓存响应,CloudFront 会将其返回给查看者,而不会将请求转发给源。在您的案例中,由于 Lambda@Edge 函数正在修改用于丰富社交共享的元标记,因此缓存响应可能不包含更新的元标记。

一种测试方法是对包含富社交共享元标记的特定页面的缓存无效。这将迫使 CloudFront 将请求转发到原点,然后触发 Lambda@Edge 函数更新元标记。

另一个方法是检查 Twitterbot 或 LinkedIn 机器人发送的标头,确保标头与其他客户端发送的标头一致。

您还可以检查 CloudFront 访问日志,查看是否存在与 Twitterbot 或 LinkedIn 机器人发出的请求相关的错误。

如果上述解决方案都不起作用,那么问题可能出在 Lambda@Edge 函数及其修改元标记的方式上。你可以尝试检查 Lambda 函数的日志,看看是否有任何可能导致问题的错误。

最后,您还可以尝试使用其他缓存选项来代替 CloudFront,比如使用 Cloudflare 或 Akamai 等 CDN(内容分发网络),这样可能更适合您的使用情况。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则