我的Webapp正在使用https連接/ ssl證書運行。我需要向用戶展示圖片。我通過API請求獲取圖片的鏈接,然後將它們鏈接起來。可悲的是,圖片地址是http,所以瀏覽器顯示網站上存在不安全的部分,這不能是...在https連接中加載的Http內容
我可以下載圖片並鏈接到正確的圖片,但我認爲這可能有點耗時,並不是處理這個問題的最好方法。
有人知道更好的解決方案嗎?我使用PHP,jQuery和JavaScript。
我的Webapp正在使用https連接/ ssl證書運行。我需要向用戶展示圖片。我通過API請求獲取圖片的鏈接,然後將它們鏈接起來。可悲的是,圖片地址是http,所以瀏覽器顯示網站上存在不安全的部分,這不能是...在https連接中加載的Http內容
我可以下載圖片並鏈接到正確的圖片,但我認爲這可能有點耗時,並不是處理這個問題的最好方法。
有人知道更好的解決方案嗎?我使用PHP,jQuery和JavaScript。
您必須在服務器上編寫代理並通過它顯示所有圖像。基本上,你的網址應該是這樣:
$url = 'http://ecx.images-amazon.com/images/I/51MU5VilKpL._SL75_.jpg';
$url = urlencode($url);
echo '<img src="/proxy.php?from=' . $url . '">';
和proxy.php:
$cache = '/path/to/cache';
$url = $_GET['from'];
$hash = md5($url);
$file = $cache . DIRECTORY_SEPARATOR . $hash;
if (!file_exists($file)) {
$data = file_get_contents($url);
file_put_contents($file, $data);
}
header('Content-Type: image/jpeg');
readfile($file);
這樣做時,它可以用來做腳本注射Becareful。沒有驗證圖像的來源,因此可能用它來代理互聯網上的任何東西。 – iWantSimpleLife 2015-07-14 01:13:37
好吧,我要告訴你一個例子流。當然,您需要適應您的需求。
假設您使用此內容命名mws.php
您的服務器上的PHP文件:
if (isset($_GET['image']))
{
header('Content-type: image/jpeg');
header('Content-transfer-encoding: binary');
echo file_get_contents($_GET['image']);
}
查找網絡上的任何圖像,例如:
http://freebigpictures.com/wp-content/uploads/2009/09/mountain-stream.jpg
現在你可以顯示圖片,就好像它位於你自己的安全服務器上一樣:
https://<your server>/mws.php?image=http://freebigpictures.com/wp-content/uploads/2009/09/mountain-stream.jpg
I如果你不止一次需要它,當然會更好地在本地存儲圖像,並且你必須包含正確的代碼才能從亞馬遜MWS ListMatchingProducts中獲取它,但這是基本思想。
請不要忘記確保腳本不被濫用。
您的問題中沒有足夠的信息來給出答案。哪個API?你不能把'http://'改成'https://',爲什麼不呢?圖像是否在外部資源上? – 2014-10-31 19:37:08
亞馬遜MWS ListMatchingProducts – baao 2014-10-31 19:38:27
如果我將http://更改爲https://它根本不顯示任何圖片。這些圖像存儲在亞馬遜的服務器上 – baao 2014-10-31 19:41:20