PHP模拟HTTP响应
所谓的PHP模拟HTTP响应,其实是通过header函数修改HTTP协议的响应头部分,常见的有跳转、刷新、下载等。
跳转
意思就是浏览器请求到当前文件之后,直接跳转到其他的位置。
对应的是HTTP的location响应头信息1
2
3
4
5
//设置网页编码
header("Content-type:text/html;Charset=utf-8");
//页面跳转
header("Location:https://blog.treelo.xin");
刷新
刷新的本质还是跳转,不过刷新的意思就是告诉浏览器多长时间之后进行跳转
和location的本质区别是,在刷新等待的时候,后面的代码会继续执行!1
2
3
4//设置网页编码
header("Content-type:text/html;Charset=utf-8");
header("refresh:3;url=https://blog.treelo.xin");
die("3秒后跳转到其他的页面");
下载
其实下载可以通过a标签来实现1
<a href="155455412423.png">今日日签</a>
但是,通过a标签进行下载并不可靠,我们可以通过修改http响应协议,告诉浏览器,不需要尝试去解析,而是直接给用户下载1
<a href="download.php">今日日签</a>
download.php1
2
3
4
5
6
7//设置header请求头,告诉浏览器不要解析文件,
//application/octet-strean 二进制流数据类型
header("Content-Type:application/octet-stream");
//指导浏览器如何保存文件(attachment 是以附件额的方式保存)
header("Content-disposition:attachment;filename=155455412423.png");
//将155455412423.png
echo file_get_contents('155455412423.png');
防盗链
refrerer的概括
如果你不想让别的网站,调用自己网站的资源,你可以使用防盗链功能。
refrerer:可以获取访问当前网页的来源。换句话说:你是从哪个网站跳到自己的网站的。
使用$_SERVER[]获取HTTP请求信息
每一次HTTP请求的所以信息,都会自动存储到超全局数组$_SERVER中
1 | <a href="https://blog.treelo.xin/download.php">今日日签</a> |
1 | //判断网页的链接来源是本网站还是外网 |