关于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");
?>
关于http协议的理解的更多相关文章
- HTTPS强制安全策略-HSTS协议阅读理解
https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...
- Http协议与TCP协议简单理解(转)
在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...
- Http协议与TCP协议简单理解
TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...
- HTTP协议强化理解
一:第一波 1. 是什么? 答:是一种定义超文本在网络中如何进行传输的协议! 所有的WWW上的文件都必须遵循! 是基于TCP/IP. 传输路径: 客户端<——>服务端 (全双工) ...
- TeamTalk自定义IM协议的理解
一.TeamTalk自定义IM协议 TeamTalk自定义IM协议是一种基于protocol buffer的消息传递协议,protocol buffer可以自定义消息格式.protocol buffe ...
- Http协议的理解
作者技术有限,这篇博文都是结合网上的文章和自己的理解而写的,若存在错误,请无私指出,十分感谢! 协议,就是一种标准,即大家都要遵守的标准. 举个简单的例子:在中国,几乎人人都会讲普通话,不同地区的人有 ...
- TCP/UDP协议、理解三次握手四次挥手、Socket
一.什么是socket? 中文名叫套接字,是对底层的 TCP IP UDP 等网络协议进行封装,使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议. 在程序员的言论,他就是一个封装好的模块,要 ...
- 关于GPL协议的理解(开源与商用、免费与收费的理解)
编者:请特别注意看暗红色粗体标注的那几句话,总结下来有下面几点: 如果你用了我的 GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把你的软件商用和我没关系 Oracle 卖的不是软 ...
- 从敲入 URL 到浏览器渲染完成、对HTTP协议的理解
1. 大致过程 当你这样子回答的时候: 用户输入 url 地址,浏览器查询 DNS 查找对应的请求 IP 地址 建立 TCP 连接 浏览器向服务器发送 http 请求,如果服务器段返回以 301 之类 ...
- RTMP协议的理解
RTMP协议:real time message protocol 工作原理: 先采集摄像头视频和麦克风音频信息,再进行音视频的编码(mpeg),通过FMLE(Flash Media Live Enc ...
随机推荐
- TCP状态转换图详解
以下对几个关键的中间状态进行说明: 三次握手: LISTEN:表示服务器的某个SOCKET处于监听状态,可以进行连接了. SYN_SENT:表示客户端的某个SOCKET与服务器进行connect时,首 ...
- UML 之 四种关系
学习过UML的人都知道,UML之中有九种图和四种关系,今天,我们先来介绍一下这四种关系: 对于我们这些初学者来说,UML之中无非是 关联.依赖.泛化和实现,但是其中,关联和依赖又如何区分?泛化又如何 ...
- Redis在Windows下的安装和使用
NoSQL简介 介绍redis前,我想还是先认识下NoSQL,即not only sql, 是一种非关系型的数据存储,key/value键值对存储.现有Nosql DB 产品: Redis/Mongo ...
- 【转】html、css、js文件加载顺序及执行情况
原链接:http://www.cnblogs.com/Walker-lyl/p/5262075.html 今天看书,看到html,css,js加载执行情况,发现自己并不是真正的了解,网上搜了半小时依然 ...
- Portlet简述
一.Portlet是什么? Portlet是基于java的web组件,由portlet容器管理,并由容器处理请求,生产动态内容.Portals使用portlets作为可插拔用户接口组件,提供信息系统的 ...
- Nico Nico Ni~(完全背包)
Time Limit:2000MS Memory Limit:65535K Type: Program Language: Not Limited Description Lys plays L ...
- HBase 分布式环境搭建
一.前期环境 安装概览 IP Host Name Software Node 192.168.23.128 ae01 JDK 1.7, Zookeeper-3.4.5 HMaster 192.168. ...
- 【原】iOS学习41之多线程
1. 多线程概述 1> 程序.进程和进程的概念 程序:由源代码生成的可执行应用.(例如:QQ.app) 进程:一个正在运行的程序可以看做一个进程.(例如:正在运行的QQ就是一个进程),进程拥有独 ...
- echarts.js 做图表的插件
<scripttype="text/javascript"src="{uiurl()}echarts/echarts.js"></script ...
- spark-sql访问hive的问题记录
好久没有弄博客了... hive0.14 spark0.12 [hadoop@irs bin]$ ./spark-sql Spark assembly has been built with Hive ...