HTTP协议基础

一、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、处理

代码如下:


   
    
四、header()函数
1、作用:改变向请求端发送的http响应消息头
2、Location(重定向)的工作模式,如下图:

五、通过header()禁用缓存,代码如下

    
    
六、文件下载
文件下载需注意下载文件的编码与代码文件编码一致!
代码如下:

    
    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);  //关闭文件
		}
	}
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值