PHP自学之路--- HTTP协议深度剖析
2013-05-26 11:54
786 查看
一、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 协议详解,这个可以去网络上搜索的
那么我们如何知道客户端给服务器发送的的数据,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响应:
基本结构看下图:
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200OK //客户端请求成功
400BadRequest //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报
//头域一起使用
403Forbidden //服务器收到请求,但是拒绝提供服务
404NotFound //请求资源不存在,eg:输入了错误的URL
500InternalServerError//服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后,
//可能恢复正常
eg:HTTP/1.1200OK(CRLF)
参考资料:
http://www.blogjava.net/joan/articles/247271.html 及传智博客视频
相关文章推荐
- http协议深度剖析
- 高并发系统之HTTP缓存协议深度剖析
- Java中深度剖析Http协议
- 细说servlet之 深度剖析http协议
- 深度剖析:HTTP协议
- 06-http协议深度剖析2--302-304
- PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门
- 深入剖析/图解HTTP 协议
- PHP自学之路-----PHP.in中session和cookie的配置说明
- PHP自学之路------PHP文件编程
- PHP调用http协议地址(aspx页面)
- PHP自学之路-----javascript基础入门
- php之文件上传深度剖析
- PHP自学之路----错误及异常处理机制、错误日志
- PHP中的http协议
- 变量浮点型PHP自学之路-----PHP基础数据类型及运算符介绍
- HTTPSQS:基于HTTP协议的轻量级开源简单队列服务(安装php客户端)
- PHP自学之路-----javascript基础入门
- PHP自学之路--------PHP数据库编程
- PHP中Http协议post请求参数