无法通过HTTPS访问Amazon S3 dzi图像文件

时间:2015-05-15 16:01:26

标签: image ssl amazon-web-services https amazon-s3

我有一个页面显示存储在Amazon S3帐户中的深度缩放图像。图像URL在控制器中以这样的方式创建:

imageUrl = "http://" + image.TileBucketNum + ".img.americanancestors.org/" + image.FileGuid.Trim().ToLower() + ".xml";

产生类似“http://83.img.mywebsite.org/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml

的内容

我们在网站上安装了SSL证书后,由于混合内容错误,图片页面停止工作:

  

'mywebsite.org'是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点“http://83.img.mywebsite.org/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml”。

我尝试将图片网址更改为https,但如果我只是将其更改为“https://83.img.mywebsite.org/ ....”图片无法加载;如果我尝试直接转到该URL(使用http,自动下载图像),我会得到一个安全警告页面。

我尝试了this post上的建议,并尝试使用此网址:

'https://s3.amazonaws.com/83.img.mywebsite.org/images/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml'

但返回“拒绝访问”消息。如何在HTTPS页面上加载S3图像?

1 个答案:

答案 0 :(得分:0)

好的,会尽力清除你的情况

首先,我假设你在没有CloudFront的情况下使用s3存储,当你使用链接http://83.img.mywebsite.org/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml时,你使用CNAME(自定义带有CNAME {3}}的Amazon S3网址)到s3

然后您提到了帖子http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingCustomURLs,该帖子解释了如何为CloudFront使用自定义SSL,看起来您没有使用

然后当你尝试How to Configure SSL for Amazon S3 bucket'我想你推出了子域名" 83.img.mywebsite.org"到实际应该放置您的存储桶名称的位置(但可能您有相同的存储桶名称)。我也很困惑"图像"你在第一个链接中没有提到的路径。

结论:您没有指定使用哪种语言,但最好使用AWS SDK和方法" getObjectUrl"生成到s3对象的正确链接。

例如,对于PHP,您可以下载https://s3.amazonaws.com/83.img.mywebsite.org/images/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml

并执行以下操作:

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';

// Instantiate the client.
$s3 = S3Client::factory();
$plainUrl = $client->getObjectUrl($bucket, 'data.txt');