一、HTTP协议消息头各项含义
Remote Address //远程服务器地址
Request URL //所请求资源的URL路径
Request Method //请求的方式,get/post
HTTP/1.1 200 OK //状态码,表示服务器对请求的处理结果
Request Headers
Accept //请求端接受的内容格式
Accept-Encoding //请求端接受的数据压缩格式
Accept-Language //请求端接受的语言
Cache-Control //缓存控制,是否开启了缓存
If-Modified-Since //请求的资源所记录的时间,与Response中的Last-Modified比较,用于判断是否从缓存中取资源
Connection //告诉服务器是否保持链接
Cookie //cookie信息
Host //请求的主机
Referer //请求从哪里来。可用于防盗链
User-Agent //浏览器内核,操作系统
Response Headers
Server //告诉浏览器服务器的情况
Connection //告诉请求端是否保持链接
Location //重定向的地址
Content-Encoding //回送(响应)的数据的压缩格式
Content-type //回送的数据的类型
Content-Length //回送数据大小
Last-Modified //所请求资源的最新更新时间。
Date //收到请求的时间
Refrese:xx ;url=xx //间隔一定时间跳转至url地址
Server //服务器是什么
Set-Cookie //所创建cookie的信息
Expires //缓存控制,是否开启缓存
Cache-Control //缓存控制,是否开启缓存
Pragama //缓存控制,是否开启缓存
二、常用状态码
请求成功的状态码
200 -- 服务器成功返回网页
304 -- 未修改 //请求的资源未修改,请求端从缓存里读取资源
302 -- 重定向
请求失败的状态吗
404 -- 请求的页面不存在
503 -- 服务器暂时不可用
500 -- 服务起内部错误
三、防盗链技术
1、全局数组$_SERVER取回请求端来源:$_SERVER['HTTP_REFERER']
2、判断来源是否有访问权限
3、处理
代码如下:
代码如下:
subFilePath = "/http/";
$this->fileName = $fileName;
$this->fileName = iconv('utf-8', 'gb2312', $this->fileName); //解决中文不能识别的问题
$this->filePath = $_SERVER['DOCUMENT_ROOT'] . $this->subFilePath . $this->fileName;
$this->fileSize = filesize($this->filePath);
//下载文件需要用到的头
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length:".$this->fileSize);
header("Content-Disposition: attachment; filename=".$this->fileName);
}
//向请求端回送数据
function down() {
//打开文件,实质是将文件读入内存
if(!file_exists($this->filePath))
die('文件不存在!');
$fp = fopen($this->filePath, 'r');
$buffer = 1024; //一次发送的数据大小
$fileCount = 0; //已发送数据大小
//向请求端分批回送文件数据
while(!feof($fp) && $fileCount < $this->fileSize) {
$filePart = fread($fp, $buffer);
$fileCount += $buffer;
echo $filePart;
}
fclose($fp); //关闭文件
}
}
?>