2015-05-15 65 views
0

我有一個顯示存儲在Amazon S3帳戶中的深度縮放圖像的頁面。圖片網址創建這樣的控制器:無法通過HTTPS訪問Amazon S3 dzi圖像文件

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' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ' 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'

但返回消息 「拒絕訪問」。如何將我的S3圖像加載到HTTPS頁面上?

回答

0

OK,將嘗試清除您的情況有點

首先,我假設你使用S3存儲沒有CloudFront的,當你使用的鏈接http://83.img.mywebsite.org/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xml,您使用CNAME(定製與CNAME記錄http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingCustomURLs亞馬遜S3的URL)到S3

然後,你指的是介紹如何使用自定義的SSL的CloudFront的,看起來像你沒有使用

然後,當你試圖https://s3.amazonaws.com/83.img.mywebsite.org/images/8985cb7f-0795-4ff6-bfd1-c2a27bf0963d.xmlHow to Configure SSL for Amazon S3 bucket「我想,你的推杆子域「83.img 。我website.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');