在做博客到HTTPS的接入。
然后问题来了,有些资源,是不兹磁HTTPS的,比如一些引用的图片,脚本等等,然后遇到这些就很头疼。
当然,如果资源是静态的,可以直接放到本地服务器。
但是如果资源是动态的,或者经常更新,这个方法似乎就不怎么解决问题。
于是有个更神奇的方法,直接通过本地服务器,代理获取目标文件,然后再以HTTPS返回。
比如这个文件:http://steamsignature.com/profile/schinese/76561198069467122.png
这个是某网站生成的Steam动态签名,可以用于论坛签名等等。我放在博客的右侧小工具栏。
然后我天真的以为这货应该更上时代,用了HTTPS,然而事实是,并没有!
华丽丽的连接失败,这就不开心了。
而且这个图片是实时生成变化的,会随着你最近的游戏,你是否在线等等有改动。
所以我们使用文件代理来解决这个问题~!
代码参考(五楼):http://bbs.csdn.net/topics/390877515
PHP:
<?php header("Content-Type: text/html; charset=UTF-8"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pramga: no-cache"); $url = 'http://steamsignature.com/profile/schinese/76561198069467122.png'; $ch = curl_init(); //初始化 curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLOPT_REFERER, '某个来路url'); //伪造来路页面 curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'func'); curl_exec($ch); //执行 function func($ch, $str) { static $s = '@'; if($s) { $s = trim($str); if($s) header($s); }else echo $str; return strlen($str); } ?>
$url = 'http://steamsignature.com/profile/schinese/76561198069467122.png';里面的内容可以替换为你自己的URL~
前面加了header头,以免某些CDN或者客户端缓存(当然这不是说CDN就不缓存了。。。看情况),强迫症使用的。
完成的效果:https://www.tutugreen.com/img/Steam/tutugreen.php
然后就可以安心放到网页中啦。
于是可能有小白问,这就一个文件,如果是很多文件我要一个一个创建吗?
不用滴!
可以直接修改:
$url = 'http://steamsignature.com/profile/schinese/76561198069467122.png';
改为:
$url = $_GET["url"];
这样就可以通过:http://xxx.com/a.php?url=http://www.xxxx.com/xxx.png 这样的方式进行代理。
当然实际使用的时候还要注意转义,UNICODE转换等等。
Comments | NOTHING