### 一、HTTP协议
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。是目前互联网上应用最为广泛的网络协议,是工作在tcp/ip协议基础上的,所有的www文件都必须遵循这个标准,设计HTTP的目的就是为了提供一种发布和接受HTML页面的方法
1、通过HTTPWATCH产检来抓取HTTP的请求内容
2、HTTP1.0是短连接 HTTP1.1长连接
所谓的短连接就是数据发送出去就断开连接,这样每次发送都需要再连接一次。目前使用1.1版本,长连接
3、HTTP/IP协议的一个应用层协议,HTTP也是我们WEB开发的基础。
**HTTP请求部分基本结构:**
**下面是一个简单的关于HTTP结构的介绍,具体的介绍吧可以参照HTTP 协议详解,这个可以去网络上搜索的**
**![](https://box.kancloud.cn/2016-06-03_5750fd8e72cec.jpg)**
**那么我们如何知道客户端给服务器发送的的数据,PHP提供给我们一个预定义变量_SERVER数组来保存**
~~~
获得服务器的内容。具体可以查看PHP手册。
~~~
**看下面的代码:**
~~~
<?php
/*print_r($_SERVER);//没有格式使用下面的方式打印
//获得客户端内容
foreach ($_SERVER as $key=>$val){
echo "$key=$val <br/>";
}
*/
//那么我们如何获得客户端的IP地址
//echo "服务器的IP地址是:".$_SERVER["REMOTE_ADDR"];
//服务器可以通过下面的方法来拒绝客户端的请求
if ($_SERVER["REMOTE_ADDR"] == "192.168.1.101"){
//页面跳转,重定向
header("Location: http://blog.csdn.net/jsh13417");
}
?>
~~~
在服务器端,我们可以通过预定义变量$_SERVER获得客户端发送的内容,下面列举一些常用内容
HTTP_HOST:当前请求的 Host: 头信息的内容。
REMOTE_ADDR :正在浏览当前页面用户的 IP 地址DOCUMENT_ROOT:可以获取服务器的主目录
REQUEST_URI :可以回去请求资源名
###HTTP请求主要方式:
get post 区别:
1、安全性:
get请求的内容是放在地址栏中的,而POST的内容是放在协议体中的
2、从提交的数据的大小看
http 协议本身并没有限制数据的大小。浏览器再对get post请求数据做限制,get请求数据 2k+35,而对post请求没有限制,他是在消息体内
这样,如何传输的数据量比较大的话,需要使用get请求。
3、get请求可以更好的添加到收藏夹
### 防盗链技术
下面是在服务器下面保存的2个文件
~~~
<?php
//防止防盗链
if(isset($_SERVER["HTTP_REFERER"])){
//取出来,判断是不是以
}
echo '<a href="import.php">jsh账户信息查询</a><br/>';
?>
~~~
~~~
<?php
//防止防盗链
if(isset($_SERVER["HTTP_REFERER"])){
//取出来,判断是不是https://192.168.1.110/myphp/http开偷,如果是则是正确否则错误
if(strpos($_SERVER["HTTP_REFERER"],"https://192.168.1.110/myphp/http") == 0){
echo "jsh的账户名:5789123085<bt/>密码:123456<br/>";
}
} else{ //则不是,需要跳转到百度页面
header("Location: http://www.baidu.com/");
}
?>
~~~
现在是在window下面写个文件,直接连接上面的文件
~~~
<a href="https://192.168.1.110/myphp/http/import.php">查看用户属性<a/>
~~~
这时候会被跳转到百度页面!
### HTTP响应:
基本结构看下图:
![](https://box.kancloud.cn/2016-06-03_5750fd8e8ca7e.jpg)
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200OK //客户端请求成功
400BadRequest //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报
//头域一起使用
403Forbidden //服务器收到请求,但是拒绝提供服务
404NotFound //请求资源不存在,eg:输入了错误的URL
500InternalServerError//服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后,
//可能恢复正常
eg:HTTP/1.1200OK(CRLF)
![](https://box.kancloud.cn/2016-06-03_5750fd8e8ca7e.jpg)
![](https://box.kancloud.cn/2016-06-03_5750fd8eb05bb.jpg)
参考资料:
[http://www.blogjava.net/joan/articles/247271.html](http://www.blogjava.net/joan/articles/247271.html) 及传智博客视频
- 前言
- HTML(第一天)
- HTML(第二天)
- DIV+CSS(第一天)
- DIV+CSS(第二天)
- DIV+CSS(第三天)
- DIV+CSS(第四天)
- PHP开发环境配置说明
- PHP基础数据类型及运算符介绍
- 走进PHP函数
- 走进位运算
- 走进数组及相关数组函数
- 面向对象的编程(类与对象)
- 面向对象的编程(类成员方法用法)
- 构造方法,析构方法
- static,global用法
- 静态方法
- 面向对象的编程方法
- 接口方法
- 接口VS继承、final、const
- 错误及异常处理机制、错误日志
- HTTP协议深度剖析
- 文件下载
- PHP数据库编程
- 数据库编程(2)
- 超全局变量
- Zend studio 开发环境入门
- 雇员管理系统(1)
- 雇员管理系统(2)
- 会话技术(cookie session)
- 会话技术 session场景使用介绍!
- PHP.in中session和cookie的配置说明
- PHP文件编程
- 报表及绘图技术
- 报表及绘图技术(jpgraph库使用,Linux安装及配置说明)
- XML基本语法及DTD介绍
- XML编程(Dom技术)
- XML编程(Xpath技术,simpleXml技术)基础入门
- 网上支付平台PHP版本
- javascript基础入门