我在https
上运行了一个网站。
我必须从没有https但只有http
协议的外部服务器(外部域)加载图像。
有没有办法通过PHP或Node处理http
图像的代理?所以我可以像这样渲染图像:
<img src="https://domain.com/proxy?url=http://externaldomain.com/image.jpg" />
这个想法是避免在本地保存图像,但只显示它们。
当我尝试在http
域内呈现https
个已投放的图片时,我收到此控制台消息:
https://domain.com/处的页面显示http://externaldomain.com/image.jpg的不安全内容。
同样,地址栏中的SSL(/ https)锁定图标变为灰色。
答案 0 :(得分:6)
你可以使用node来管理图像,而不是在发送到客户端之前将整个图像加载到内存中(就像file_get_contents
在php中那样)。
在streaming中使用此示例中的请求是为了简单:
var https = require('https');
var url = require('url');
var request = require('request');
var server = https.createServer(function (req, res) {
var queryData = url.parse(req.url, true).query;
if (queryData.url) {
var x = request(queryData.url);
req.pipe(x).pipe(res);
} else {
res.writeHead(400, {"Content-Type": "text/plain"});
res.end("No url");
}
});
// Listen on port 443
server.listen(443);
答案 1 :(得分:1)
这样的事情应该有效:
<?php
header('Content-type: image/jpeg;');
$p = "http://i.imgur.com/jB3xD75.jpg";
$a = file_get_contents($p);
echo $a;
?>
答案 2 :(得分:0)
您应首先使用php cURL库下载它们。如果您不想将图像存储在硬盘驱动器上。您可以将它们作为数据URI添加到src属性中。