首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在https连接中加载的Http内容

问在https连接中加载的Http内容
EN

Stack Overflow用户
提问于 2014-10-31 19:35:05
回答 2查看 76关注 0票数 0

我的Webapp正在使用https连接/ ssl证书运行。我需要给用户显示图片。我通过API请求获取到图片的链接,然后将它们链接起来。遗憾的是,图片地址是http,所以浏览器显示站点上有不安全的部分,这不能是.

我可以下载图片,然后链接到适当的图片,但我认为这可能有点费时,不是最好的处理方法。

有人知道更好的解决办法吗?我使用php、jquery和javascript。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-31 19:58:57

您必须在服务器上编写一个代理,并通过它显示所有图像。基本上,您的URL应该是:

代码语言:javascript
复制
$url = 'http://ecx.images-amazon.com/images/I/51MU5VilKpL._SL75_.jpg';
$url = urlencode($url);

echo '<img src="/proxy.php?from=' . $url . '">';

proxy.php:

代码语言:javascript
复制
$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);
票数 1
EN

Stack Overflow用户

发布于 2014-10-31 19:59:06

好的,我有一个流的例子给你。当然,你需要使它适应你的需要。

假设您在服务器上创建了一个名为mws.php的php文件,其内容如下:

代码语言:javascript
复制
if (isset($_GET['image']))
{
   header('Content-type: image/jpeg');
   header('Content-transfer-encoding: binary');
   echo file_get_contents($_GET['image']);
}

例如,在网络上查找任何图片:

代码语言:javascript
复制
http://freebigpictures.com/wp-content/uploads/2009/09/mountain-stream.jpg

现在,您可以显示该映像,就像它位于您自己的安全服务器上一样,使用这个url:

代码语言:javascript
复制
https://<your server>/mws.php?image=http://freebigpictures.com/wp-content/uploads/2009/09/mountain-stream.jpg

当然,如果您不止一次需要将图像存储在本地,并且必须包含正确的代码才能从Amazon获得图像,当然这样做更好,但这是基本的想法。

请别忘了保护你的剧本不被滥用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26682163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档