HTTP协议

2018-07-30  本文已影响8人  小胖熊威廉

请求的数据格式分为四部分:


响应的数据格式:


常用请求方法 POST、GET、PUT、DELETE

请求/请求报文

请求由客户端发起,其规范格式为:请求行、请求头、请求主体。

1. 请求行

由请求方式、请求URL和协议版本构成

2. 请求头
3. 请求主体

即传递给服务端的数据

注:当以post形式提交表单的时候,请求头里会设置

Content-Type: application/x-www-form-urlencoded,以get形式当不需要

响应/响应报文

响应由服务器发出,其规范格式为:状态行、响应头、响应主体。

1. 状态行

由协议版本号、状态码和状态信息构成

2. 响应头

MIME是标识文件类型的,文件后缀并不能正确无误的标识文件的类型。

客户端与服务器在进行数据传输的时候都是以字节形式进行的,咱们可以理解成是以“文本形式”传输,这时浏览器就需要明确知道该怎么样来解析这些文本形式的数据,MIME就是明确告知浏览器该如何来处理。

3. 响应主体

即服务端返回给客户端的内容;

状态码

常见的有200代表成功、304文档未修改、403没有权限、404未找到、500服务器错误,302 代表的是请求重定向。

调试工具

利用HTTP抓包工具在开发中可以帮我们进行调试,常用抓包工具HttpWatch、Fiddler、Charles、FireBug等

浏览器插件

Firebug、HttpWatch、chrome dev tools

代理软件

Charles、Fiddler

特殊的请求头以及响应头介绍

请求头
User-Agent: 告诉服务器,客户端的浏览器的版本
Content-Type:application/x-www-form-urlencoded post 提交独有的请求头,如果发送到服务器的数据是中文,会对数据进行编码.
Referer:http://localhost/index.html 告诉服务器,客户端的请求来自于哪个页面。破解安全验证,这个referer都会做处理。
响应头:
告诉客户端浏览器
Content-Type:text/html;charset=utf-8;
Refresh:告诉客户端浏览器过几秒之后重新刷新
常见的请求状态吗:
200  ok
403  没有权限访问
404  请求的资源没有找到 
304  后端的文件的没有任何的改变 
302  重定向 会发送两次请求。
500  服务器内部错误.

get 请求与post 请求介绍

1. get 发送的数据都在地址栏当中,不安全
2. get 发送的数据对数据大小由限制。
3. get 没有请求体
4. post 发送的数据在请求体当中,相对安全
5. post 对请求的数据的大小没有限制
6. post 有一个特殊的请求头 Content-Type:application/x-www-form-urlencoded
7. get 的请求头相对较少,性能稍微要高一些.
//案例1
        //解决乱码,给客户端一个响应头
        header("Content-Type:text/html;charset=utf-8");
        //1:获取请求头 获取所有的请求头.
          $arrHeader=getallheaders();
        //2:我获取的是User-Agent 请求头对应的值
          $headeValue=$arrHeader["User-Agent"];
        // echo $headeValue;
        //3:php 里面有一个函数 strstr() 判断字符串是否包含指定的字符串.
        if(strstr($headeValue,"Chrome")){
             echo "您当前使用的google 浏览器,棒棒哒!";
        }else if(strstr($headeValue," Firefox")){
             echo "您当前使用的火狐 浏览器,双击666";
        }else if(strstr($headeValue,"MSIE")){
             echo "您当前使用的浏览器版本较低,请<a href='http://www.360.com'>升级</a>";
        }
<!-- 案例2 -->
<?php
        header("Content-Type:text/html;charset=utf-8");
        //1:给一个响应头
        header("Refresh:5;url=http://www.baidu.com");
        //2:给文字提示.
        echo " <span>5</span> 秒钟之后会自动跳转页面,如果没有跳转,请点击<a href='http://www.baidu.com'>这里</a>";
?>
<script>
        var i=5;
        var ids=window.setInterval(function(){
            i--;
            if(i==0){
                window.clearInterval(ids);
                return;
            }
            document.querySelector("span").innerHTML=i;
        },1000);
</script>
上一篇 下一篇

猜你喜欢

热点阅读