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

访问结果:



浙公网安备 33010602011771号