Intereting Posts

Как создать прокси-сервер PHP / Node для визуализации внешних http-изображений на веб-сайте https?

У меня есть сайт, работающий на https . Я должен загружать изображения с внешнего сервера (внешний домен), который не имеет https, а единственный протокол http .

Есть ли способ обработать прокси для http изображений через PHP или Node? Поэтому я могу делать изображения следующим образом:

 <img src="https://domain.com/proxy?url=http://img.ruphp.com/php/image.jpg" /> 

Идея состоит в том, чтобы избежать сохранения изображений на локальном компьютере, но только показывать их.

Когда я пытаюсь передать http изображения в https домен, я получаю это сообщение консоли:

На странице https://domain.com/ отображается небезопасный контент из http://img.ruphp.com/php/image.jpg .

Кроме того, значок блокировки SSL (/ https) внутри адресной строки становится серым.

Вы можете использовать узел, который будет просто передавать изображение вместо загрузки всего изображения в память перед отправкой клиенту (например, file_get_contents будет делать в php). Использование запроса в этом примере для простоты потоковой передачи :

 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); 

что-то вроде этого должно работать:

 <?php header('Content-type: image/jpeg;'); $p = "http://img.ruphp.com/php/jB3xD75.jpg"; $a = file_get_contents($p); echo $a; ?> 

Вы должны сначала загрузить их, используя библиотеку php cURL. Если вы не хотите сохранять изображения на жестком диске. Вы можете добавить их как URI данных в атрибут src.