簡體   English   中英

Cloudfront 和 Lambda@Edge 的 Twitter 和 LinkedIn 元標記問題

[英]Issue with Twitter and LinkedIn meta tags with Cloudfront & Lambda@Edge

我正在使用 Lambda@Edge function(根據原始請求觸發)更改反應站點的元標記,該站點托管在帶有 Cloudfront 的 S3 上,用於豐富的社交共享。 它適用於 Facebook,但不適用於 Twitter 或 LinkedIn。

LinkedIn 錯誤(來自他們的檢查員):

  • 我們在嘗試檢查 URL 時遇到服務器錯誤。
  • (URL Redirect Trail) 500 失敗

和 Twitter 卡驗證器錯誤:

  • 信息:頁面獲取成功
  • 信息:找到 11 個元標記
  • 錯誤:找不到卡(卡錯誤)

我相信我的標簽實際上沒問題,例如 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 並將相同的元標記硬編碼到我的 html.index 中,Twitter 和 LinkedIn 共享就可以正常工作。

我在 AWS 文檔中看不到任何我應該做的事情來允許 Twitter/LinkedIn 機器人。

任何幫助表示贊賞!

修復此問題 - 我的問題是當我替換 Lambda function 中的元標記時,我沒有在響應中指定內容類型 header。

所以:

const responseHeaders = {
    'content-type': [{key:'Content-Type', value: 'text/html'}],
};

將其添加到響應中后,LinkedIn 和 Twitter 上的社交分享就起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM