zoukankan      html  css  js  c++  java
  • 关于http协议的理解

    一.状态码

    1.200:请求成功。

    2.302:浏览器进行重定向。

    3.304:资源已使用,即有缓存。

    4.404:请求失败,请求的资源未在服务器上发现。

    5.500:服务器端发生错误。

    二.php获取http内容

    $_SERVER中比较重要的属性

    $_SERVER['REMOTE_ADDR']:当前浏览器的IP地址

    $_SERVER['DOCUMENT_ROOT']:获得Apach的主目录

    $_SERVER['REQUEST_URL']:可以获得请求的资源名

    $_SERVER['HTTP_REFERER']:页面的来源

    三.防盗链

    test.php
    <?php
    	
    	if(isset($_SERVER['HTTP_REFERER'])) {//是否存在
    		if(strpos($_SERVER['HTTP_REFERER'], 'http://localhost/test') == 0) {//是否已http://localhost/test开头
    			echo "aaa";
    		}else {
    			header("Location: http://baidu.com/");//重定向
    		}
    	}else {
    		header("Location: http://baidu.com/");//重定向
    	}
    ?>
    

    如果要访问test.php这个页面,来源需要以http://localhost/test开头。

    四.重定向

    一般重定向:header("Location: b.php");

    控制一定时间去跳转 header("Reflash: 3;url=http://baidu.com");

    五.控制缓存

    header("Expire: -1");
    header("Cache-Control: no-cache");
    header("Pragma: no-cache");//三个均代表禁用缓存,兼容不同的浏览器

    六.文件下载

    <?php
    
    function downFile($filename, $root) {
    	$file_name = $filename;
    
    	//文件为中文名
    	$file_name = iconv("utf-8", "gb2312", $file_name);
    
    	//绝对路径
    	$file_path = $_SERVER['DOCUMENT_ROOT'].$root.$file_name;
    
    	if(!file_exists($file_path)) {
    		echo "文件不存在";
    		return;
    	}
    
    	$fp = fopen($file_path, "r");
    	//计算文件的大小
    	$file_size = filesize($file_path);
    
    	if($file_size > 10*1024*1024) {
    		echo "文件过大不下载";
    		return;
    	} 
    
    	header("Content-type: application/octet-stream");//返回的文件
    	header("Accept-Ranges: bytes");//按照字节大小返回
    	header("Accept-Length: $file_size");//返回文件的大小
    	header("Content-Disposition: attachment; filename=.$file_name");//客户端对应的文件名
    
    	//下载量为1024字节
    	$buffer = 1024;
    
    	while(!feof($fp)) {
    		$file_data = fread($fp, $buffer);
    		echo $file_data;
    	}
    
    	fclose($fp);
    }
    
    downFile("啊啊.jpg", "test/img/");//封装函数
    ?>
    

    源码下载,将其放在www目录下。

    七.乱码解决方案

    <meta http-equiv = "content-type" content="text/html;charset=utf-8"/>
    <?php
    header("Content-Type: text/html; charset=utf-8");
    ?>

  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/pcd12321/p/5272920.html
Copyright © 2011-2022 走看看