http协议,又称为超文本传输协议,顾名思义,http协议不仅能传输文本,还能传输图片,视频,压缩包等文件,http协议是建立在tcp/ip协议的基础之上的,http协议对php程序员来讲可以说是重中之重了;

  http请求基本结构分为:请求行;消息头;实体内容;

  请求行:

    GET/xxx/xxx.html  HTTP/1.1          //HTTP/1.1是http协议版本,1.1支持长连接,1.0支持短连接,目前普遍使用1.1版本;

  消息头(请求报头):

    Accept:*/*         //表示客户端可接受什么类型的资源,*表示通配符,表示可以接受任何类型的资源;

    Referer : http://localhost:80/XX.html        //表示用户是从哪里链接过来的(之后防盗链技术会详解);

    Accept-Launguage: zh-cn                 //表示页面可以支持哪种语言;

    User-Agent: Mozila/4.0                    //表示浏览器的内核以及操作系统;

    Accept-Encoding:gzip,deflate    //表示客户端支持什么类型的数据压缩格式;

    Host:localhost:80                       //表示主机号和端口,这个是给tcp/ip协议识别的;

    Connection:Keep-Alive                //表示长连接,不会立刻中断请求;

  实体内容                                               //表示客户端向服务器传递了哪些资源;

  http响应内容:

    HTTP/ 1.1  200  OK      //200表示服务器请求成功;其余常见的状态码在后面说;

    Server:          //表示服务器信息;

    Date:            //浏览器请求该页面的时间;

    Content-Length:                          //表示服务器回送了多少字节的资源;

    Content-Type:                             //文档类型及使用什么编码;

    Last-Modified:         //所请求的资源最新更新时间;

    Refresh:1;url=http:xxx.com    //间隔多少秒之后重定向;可在header()函数中写入实现X秒后重定向页面;

    Content-Disposition:        //这个关于文件下载;

    Transfer-Encoding:         //文件下载

    Set-Cookie:            

    Keep-Alive:timeout=5,max=99    //表示长连接可维持多少秒;

    Expires: -1 ;             //控制页面是否支持缓存;浏览器默认支持缓存,在header函数中输入以下三个头信息;

    Cache-Control: no-cache ;       //缓存存在的时间是可以自行指定的;

    Pragma:  no-cache ;         //控制页面是否支持缓存;

  http响应的状态码详解可以点击下面链接查阅:https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

  常用的有302,304,202,404状态码:302状态码一般用于做重定向;404状态码通常是所查找的资源不存在;304码一般在当http发送请求资源时发现缓存中有相同资源,浏览器则会向服务器端发送一个(Last-Modified:)该资源最近更新的时间参数,由服务器去验证该资源的最近更新时间是否一致,如一致说明该资源没有进行更新则向缓存取出该资源;

  在PHP中你可以通过 echo  $_SERVER   来获取所有关于该页面HTTP协议的所有内容;

  常用的有:

    HTTP_HOST      //主机名;

    DOCUMENT_ROOT    //获取apche的主目录;

    REQUEST_URI    //获取请求的资源名;

    REMOVE_ADDR    //获取当前访问客户端的IP地址;

    HTTP_REFERER            //告诉服务器我是从哪个页面链接过来的;

      用法:  $_SERVER[ ' REMOVE_ADDR ' ] ;

  可以使用header()语句向http响应头写入信息;

  http的请求方式有两种,GET请求和POST请求;从安全性而言,GET请求会显示在地址栏上,相比POST而言更不安全;GET请求处理速度更快,但是只可以处理2K以内的数据,多数用于查数据,而POST虽相对较慢但不限制资源大小,多数用于增、删、改;

    $_GET :可传输多个参数,eg:http://xxx/xxx.php?字段名=参数&字段名=参数;使用empty($_GET('字段名'))验证是否接收到参数;

    $_POST :用于传递数据,多数用于增删改;在php.ini文件中关闭register_globals设置,防止SQL注入;

  简单的防盗链技术:

    if( isset ( $_SERVER[ ' HTTP_REFERER' ] ) ){          //这条语句判断HTTP协议里是否有REFERER值;

        if( strpos ( $SERVER[ ' HTTP_REFERER' ] ,“ http://页面主址 ” ) == 0 ){   //这条语句判断REFERER值是否从本网站链接进来;

            echo   显示信息  ;

        }else{

            header( " Location:  警告页面 " );      //如进入else语句则说明该用户是盗链过来的,跳转到警告页面;

        }

    }else{

      header( " Location:  警告页面 " );

    }

    

  

http协议以及防盗链技术的更多相关文章

  1. php笔记05:http协议中防盗链技术

    倘若我们自己在电脑上写了一个网站文件(可以是html,php文件等等),但是只希望本机可以访问这个文件,不希望别的电脑访问就需要这里的防盗链技术 1.我们在本地写了一个import.php文件: 而且 ...

  2. 防盗链技术终极解决方案(squid+cookie)

    防盗链技术现状:1.通过识别Referer确认请求来源页面2.Apache,squid等都能对Referer进行识别3.通过ActiveX显示的内容不向服务器提供Referer Header(例如,F ...

  3. php破解防盗链技术

    php破解防盗链技术 发送http请求 构造referer信息 在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 具体方法http.cl ...

  4. php防盗链技术

    在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 如果是直接在浏览器上输入地址,回来进来,则没有Referer头. 这也是: 为什么服务 ...

  5. [php]referer应用--http防盗链技术

    1.防盗链的理解 所谓防盗链是防止其他的网站引用自己网站的资源连接,比如图片.视频等等,但是并不会阻碍从自己网站上享受资源的用户,这就要求能够将其他网站的连接请求阻止 2.防盗链的原理 其实从自己网站 ...

  6. JavaWeb学习记录(二)——防盗链技术

    public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpSer ...

  7. PHP HTTP协议:防盗链

    test.html:主界面 <html> <head> <meta http-equiv="content-type" content="t ...

  8. Java防盗链机制

    对于防盗链技术,网上提供了很多很多的相关技术,但是不是特别复杂就是效果不好. 这里在网上找到一种思路,就是关于HTTP协议响应头中包含的Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可 ...

  9. 防盗链&CSRF&API接口幂等性设计

    防盗链技术 CSRF(模拟请求) 分析防止伪造Token请求攻击 互联网API接口幂等性设计 忘记密码漏洞分析 1.Http请求防盗链 什么是防盗链 比如A网站有一张图片,被B网站直接通过img标签属 ...

随机推荐

  1. App Store兼容性问题

    app下载出现兼容性问题  项目支持9.0以上的系统 但是10.3的iphone5下载的一直是老版本app  下载时提示不兼容 导致无法正常使用 解决办法: 修改Build-Settings-> ...

  2. 转/ C# 托管资源和非托管资源

    原文 对于这两个一直就是模模糊糊的,半知零解 托管资源指的是.NET可以自动进行回收的资源,主要是指托管堆上分配的内存资源.托管资源的回收工作是不需要人工干预的,由.NET运行库在合适时调用垃圾回收器 ...

  3. PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP

    原文链接:http://blog.csdn.net/gjy095/article/details/9243153 上一篇文章,不是很详细,这一篇解释的清晰些,请访问原始链接. Rtrees介绍!参考链 ...

  4. day06-08初识面向对象

    一.面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.优点是:极大的降低了写程序的 ...

  5. vc++如何创建程序01

    1 .选择文件+新建(ctrl+N),然后选择一个空的工程,完成 2 然后在选择file新建,在files文件下面选择一个C++Source File,并取个文件名(比如为point可以不带.c) 我 ...

  6. Centos7安装keepalived(自定义路径安装)-高级篇

    0.Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但 ...

  7. TensorFlow+实战Google深度学习框架学习笔记(10)-----神经网络几种优化方法

    神经网络的优化方法: 1.学习率的设置(指数衰减) 2.过拟合问题(Dropout) 3.滑动平均模型(参数更新,使模型在测试数据上更鲁棒) 4.批标准化(解决网络层数加深而产生的问题---如梯度弥散 ...

  8. ubuntu重置root密码(转载自https://zhinan.sogou.com/guide/detail/?id=316512881651)

    ubuntu忘记root密码怎么办?如果普通用户忘记了怎么办 ### 第一种方法:无论你是否申请了root帐号,或是普通账号密码忘记了都没有问题的! 1. 重启ubuntu,随即长按shift进入gr ...

  9. nyoj158-省赛来了

    省赛来了 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 一年一度的河南省程序设计大赛又要来了. 竞赛是要组队的,组队形式:三人为一队,设队长一名,队员两名. 现在问题就 ...

  10. BZOJ 1835 [ZJOI2010]基站选址 (线段树优化DP)

    题目大意:略 洛谷题面传送门 BZOJ题面传送门 注意题目的描述,是村庄在一个范围内去覆盖基站,而不是基站覆盖村庄,别理解错了 定义$f[i][k]$表示只考虑前i个村庄,一共建了$k$个基站,最后一 ...