AmazonS3base64Image无法处理og:Image标签,尽管bucket是公共的



请给我一些解决下面列出的问题的建议。

我在获取图像的og标签上有一个问题。我正在使用React with Razzle进行服务器端渲染。所有的站点图像都存储在aws bucket中,该bucket具有获取图像的公共访问权限。

这些是我通过Helmet在特定页面下使用的标签。

<Helmet>
<title>{this.props.data.title+" | by "+this.props.data.username} </title>
{/* facebook open graph tags */}
<meta data-rh="true" property="og:locale" content="en_US" />
<meta data-rh="true" property="og:url" content="http://somedomain.com/view/Some title of the post" />
<meta data-rh="true" property="og:title" content="Some title of the post" />
<meta data-rh="true" property="og:type" content="article" />
<meta data-rh="true" property="og:description" content="Description of the post" />
<meta property="og:image" content="https://s3.ap-south-1.amazonaws.com/bucketname/somerandomnameofimage.png" />
<meta property="og:site_name" content="SiteName" />  
</Helmet>

在一些发现之后,我在og标签url中使用了一个来自谷歌的随机图像,效果很好,但当我对同一图像或不同图像使用s3 bucket链接时,它不起作用。

我想的是它不会获取aws s3的图像。但如果是这样的话,那么其他人是怎么做的。

我检查了许多网站的日志标签,发现他们会使用一些子域.domain.com/someimagename.extension,如果这是唯一的情况,那么我如何实现这一点。我的问题是,如果我们必须像古代的编程方式一样使用图像托管提供商,为什么我们要使用它。

请建议我如何解决这个问题。任何帮助或建议都将不胜感激。

更新我对此进行了深入研究,发现当我的图像通过Base64图像从FE上传到后端时,图像会出现一些问题。后端在s3上传该图像。

我已经通过curl命令检查了我的图像URL,即

curl -i "mybucket-imageurl"

所以我找到了

HTTP/1.1 200 OK
x-amz-id-2: ***********************************************************
x-amz-request-id: ****************
Date: Mon, 13 Oct 2020 08:37:31 GMT
Last-Modified: ************************
ETag: "*********************"
Content-Encoding: base64
x-amz-version-id: ***********************
Accept-Ranges: bytes
Content-Type: image/jpeg
Server: AmazonS3
Content-Length: 1095517

然后我直接在amazonS3上上传了一张图片,并使用了该url并获得了og:image。卷曲响应是

HTTP/1.1 200 OK
x-amz-id-2: ***********************************************************
x-amz-request-id: ****************
Date: Mon, 13 Oct 2020 08:37:31 GMT
Last-Modified: ************************
ETag: "*********************"
x-amz-version-id: ***********************
Accept-Ranges: bytes
Content-Type: image/png
Server: AmazonS3
Content-Length: 569666

我检查了一下,上面的回复并没有内容编码栏。

有人能建议我该怎么做吗?因为在我的水桶上,大约有500多张图片是由64号基地上传的,有同样的问题。

进行的最佳和有效方法是什么

没有人建议我真的很糟糕。

因此,我的发现和解决我问题的解决方案是,当我们将base64图像从服务器上传到s3时,图像上会附加一个标题,即

content-encoding: base64

我们需要将其从s3上的图像中删除。测试了它,它现在显示在og标签上。

最新更新