关于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 ...
随机推荐
- Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树 矩阵面积并
D. Vika and Segments Vika has an infinite sheet of squared paper. Initially all squares are whit ...
- Sp EF输出 临时表
-- ============================================= -- Author: <Author,,Name> -- Create date: < ...
- 移动 Web 开发技巧
1.使用click会出现绑定点击区域闪一下的情况,解决:给该元素一个样式如下 -webkit-tap-highlight-color: rgba(0,0,0,0); 2.用iphone或ipad浏览很 ...
- Linux3.18.6内核添加系统调用(32位系统)
1.将已经下载好的内核解压,我的目录是 /home/shangsongchao/LinuxKernel/testlinux-3.18.6/linux-3.18.6 2.添加系统调用表: 在/home/ ...
- a标签 打电话 发邮件
打电话<a href=”tel:010-13220163333″>13220163333</a> 发邮件<a href=”mailto:sb@you.com”>发送 ...
- DSP using MATLAB 示例Example3.22
代码: % Discrete-time Signal x2(n) Ts = 0.001; n = -5:1:5; nTs = n*Ts; Fs = 1/Ts; x = exp(-1000*abs(nT ...
- Java类与对象的基础学习
1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); ...
- Redis执行Lua脚本示例
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...
- 请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装。
安装的wamp套件,访问http://localhost/Discuz/install/index.PHP进行安装操作,提示 对不起,请将 php.ini 中的 short_open_tag 设置为 ...
- Codeforces 675E Trains and Statistic(DP + 贪心 + 线段树)
题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和. 好难,不会写. ...