【问题标题】:Can't access Amazon S3 dzi image files over HTTPS无法通过 HTTPS 访问 Amazon S3 dzi 图像文件
【发布时间】:2015-07-27 15:21:16
【问题描述】:

我有一个页面显示存储在 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”。

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

我尝试了this post 上的建议并尝试使用此 URL:

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

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

【问题讨论】:

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


    【解决方案1】:

    好的,我会尽量解决你的情况

    首先我假设您在没有 CloudFront 的情况下使用 s3 存储,并且当您使用链接 http://83.img.mywebsite.org/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml 时,您使用 CNAME(使用 CNAME http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingCustomURLs 自定义 Amazon S3 URL)到 s3

    然后您提到了帖子 How to Configure SSL for Amazon S3 bucket,它解释了如何为 CloudFront 使用自定义 SSL,看起来您没有使用过

    然后,当您尝试 https://s3.amazonaws.com/83.img.mywebsite.org/images/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml' 时,我想您将子域“83.img.mywebsite.org”放到了实际应该放置您的存储桶名称的位置(但可能您有相同的存储桶名称)。我也对您在第一个链接中没有提到的“图像”路径感到困惑。

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

    例如 PHP 你可以下载http://aws.amazon.com/sdk-for-php/

    然后做一些类似的事情:

    use Aws\S3\S3Client;
    
    $bucket = '*** Your Bucket Name ***';
    
    // Instantiate the client.
    $s3 = S3Client::factory();
    $plainUrl = $client->getObjectUrl($bucket, 'data.txt');
    

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 2016-01-07
      • 2016-11-03
      • 2020-10-08
      • 1970-01-01
      • 2017-11-21
      • 2017-02-05
      • 2012-09-21
      • 2015-03-14
      相关资源
      最近更新 更多