[英]Issue with Twitter and LinkedIn meta tags with Cloudfront & Lambda@Edge
我正在使用 Lambda@Edge function(根據原始請求觸發)更改反應站點的元標記,該站點托管在帶有 Cloudfront 的 S3 上,用於豐富的社交共享。 它適用於 Facebook,但不適用於 Twitter 或 LinkedIn。
LinkedIn 錯誤(來自他們的檢查員):
和 Twitter 卡驗證器錯誤:
我相信我的標簽實際上沒問題,例如 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.