PHP基础(四)

1.HTTP协议

  1.1HTTP协议概述

   协议:就是事先的一种约定、规则、规范、标准。

   HTTP协议:Hyper Text Transfer Protocol 超文本传输协议客户端(浏览器端)与WEB服务器端之间的交互协议。当浏览器和服务器进行数据交换是,HTML文件、图片、CSS、JS等都是基于HTTP协议传输的。

   HTTP协议保证计算机可以正确快速的传输文本文档数据,并且指定显示的格式等。

   HTTP协议有两个版本:1.0和1.1,目前使用的基本都是1.1。

   特点

      通常是基于B/S结构软件的(浏览器)。

      无连接:浏览器向服务器发送一次请求,服务器响应一次,链接即结束。

      无状态:无记忆。服务器不能记住哪个浏览器访问过。

   无连接-------没有持久化链接

   当浏览器地址栏输入 http://www.cnblogs.com/index.html,按下回车时。浏览器向服务器发送请求,服务器找到index.html文件返回给浏览器之后,本次链接断开。如果在点击该页面中任何一个链接,则重新建立一次链接。客户端发送请求,服务器响应。之后又断开链接。

1.2请求和响应

   HTTP 协议主要分为两大部分:

   (1)请求(request/http request):访问服务器的任何一个文件都是一次请求。

    客户端(浏览器)在遵循HTTP协议时向服务器索要数据。

    请求分为三个部分:请求行、请求头、请求主题。

    请求行:请求方式、请求URL地址、协议版本号。

    请求头:主机域名、客户端信息。

    请求主体:发送给服务器的数据,get或者post都会通过请求主题将数据发送给服务器。

    可以使用Chrome tools或者firebug来查看请求和响应的信息。

    举例1:访问localhost/day4/hello.php文件

    

    

      请求行中有3个部分

      GET /day4/hello.php HTTP/1.1

      (对上面这句信息详细解释一下)

      GET: 请求方式

      /day4/hello.php: 请求文件的路径

      HTTP/1.1 : 使用的协议版本号

       请求头内容较多,上图中显示的不是全部请求头

      Host: localhost   请求的主机地址

      举例2:访问get.php?id=1&name=zs

      

      

      举例3: 访问 login.html,数据提交到check.php

       查看check.php的请求主体

      

 

      (2)响应(reponse/http reponse):服务器处理请求,将结果返回给浏览器。

      响应也分为三部分:响应行、响应头、响应主体

      响应行:协议版本号、响应状态码

      响应头:服务器端的信息

      响应主体:从服务器返回给客户端的数据

      举例1:hello.php的响应信息

      

      

      响应行

      HTTP/1.1 200 OK

       HTTP/1.1 协议版本

        200 ok  :  状态码

      响应头:Content-Type: text/html  响应类型   文本/html   image/png

      响应主体:

      

      

      请求的文件类型很多:

        html、css、js、php 响应时都是纯字符串,该字符串可以直接显示出来

        如果是图片、视频、音频,响应也是字符串,但是浏览器在显示的时候会转为对应的格式

1.3状态码

     常见的状态码如下:

         200 ok   -----   请求成功

         302 redirect|Found  ----- 重定向

         403 forbidden   -----  禁止访问 (没有权限访问)

            404 Not Found  -----  未找到页面

         500 internal server error  ----- 服务器内部错误 (可能是服务器本身有问题,或者代码错的太离谱)

      举例:index.html  

        

 

1.4 header响应头设置

1)设置响应类型

  浏览器发起请求的方式是多样的,当发起请求后服务端会有对应的内容响应过来,浏览器会根据响应头 Content-Type来对响应的内容进行分析

  content-type主要的响应类型是 text/html

  其他类型 :  text/css   text/javascript   image/png  image/jpeg  image/gif

  举例1:php绘制验证码verify.php

  如果将verify.php的响应头设置为 :header(‘content-type: image/png’); 会显示成正常的图片

  

  如果设置为  header(‘content-type: text/html’);  会显示为乱码字符串

   

  举例2:header_css.php  header_css.html

  

  link标签中的href一定会发送请求,不管是否请求的是css文件

  

  2)指定字符集

  中文字符集: utf-8  gb2312  gbk

  header(‘Content-Type:text/html;charset=utf-8’);

  header(‘Content-Type:text/html;charset=gb2312’);

  举例3: charset.php

  页面是否乱码和页面指定的字符集以及文件编码有关 

  

  此时需要留意到一个问题:如果页面乱码,如何解决?

  ① 在页面中设置 header ,编码指定为 utf-8

  ② 将文件的编码格式,指定为utf-8 (使用sublime,将保存格式设置为 utf-8 或者 使用editplus另存为文件时,设置utf-8)

  3)页面重定向

  举例4:redirect.php

  

  访问结果:

  

  

 

 

posted @ 2018-03-12 23:26  李百万lbw  阅读(163)  评论(0)    收藏  举报