HTTP协议详解
HTTP协议概述
1,B/S网络结构
浏览器/服务器模式
web浏览器 (http) web服务器 (SQL) 数据库服务器
2,HTTP协议概述
超文本传输协议(HyperText Transfer Protocol)
HTTP是一个客户端和服务器端请求和应答的标准
3,HTTP协议的特点
简单,快速:只需传送请求方法和路径
灵活 :HTTP允许传输任意类型的数据对象,正在传输的类型有ContentType进行标记
无连接:每次连接只处理一个请求,请求结束后就断开,采用这种方式可以节省传输时间
无状态:对于事务处理没有记忆能力,不存储本次请求意外的数据
所以需要其他信息时,需要重传,导致数据传送的数据量增大
另外,在不需要先前信息时,应答比较快
HTTP协议 之 URL
1,什么是url
url-uniform resource locator:统一资源定位符
格式:protocol://hostname[:port]/directory/filename?name=value#anchor
举例:http://www.itcast.cn/include/news.php?p=5#top
2,url各部分含义
protocol 浏览器使用的协议:http,https,ftp,file等
hostname 服务器主机名称
port 端口号
directory 指定访问的资源目录名称
filename 指定访问的资源名称
?name=value 指定访问资源时,附带的参数部分
#anchor 指定访问资源时的锚点名称(网页的不同部分)
HTTP 协议之请求
1,http请求的构成
三部分:请求行,请求头,请求正文
2,HTTP请求行的格式
格式:Method Request-URI HTTP-Version
参数
Method:请求方法,必须大写
Request-URI:统一资源标识符(URI)
HTTP-Version:表示请求的HTTP协议版本,HTTP/1.0短连接,HTTP/1.1场链接
长连接:数据传输完成,保持连接通道不断开,等待同域名下继续使用钙通道传输数据
3,HTTP请求头含义
报头名称 含义
User-Agent 用户代理,允许客户端将他的操作系统,浏览器和其他属性告诉服务器
Host 用户指定被请求资源的主机和端口号,它通常从HTTP URL中提取出来的
Accept 用于指定客户端接收哪些类型的信息,如image/gif,text/html,*/*(所有类型)
Accept-Language 指定客户端可以接受到语言类型
Accept-Encoding 指定可接受的内容压缩编码类型
Accept-Charset 用于指定客户端接收的字符集
Cookie 写到服务器端的COOKIE数据
Connection 连接类型,keep-alive(保持激活,短时间不断开,一般为30s),Close(立即断开)
Cache-Control 控制缓存,no-cache(不缓存)
Refer 可以记录访问的来源,统计访问量,可以用来作防盗链
4,HTTP请求正文
GET方式:无消息体,数据附在url之后传递到服务器
POST方式:有消息体,数据放在消息体中传递到服务器
消息体和消息头之间有一空行,不能省略
5,下面的代码需要,http需要发送几次请求
test.php文件内容入下
<h1>北京传值博客教育</h1>
<p><img src="a.jpg"></p>
<p><img src="b.jpg"></p>
img link script frame 都是自动向服务器发送请求
HTTP协议之响应
1,响应的构成
三部分:状态行,响应头,响应正文
2,HTTP状态行的格式
格式:HTTP-Vsersion Status-Code Reason-Phrase
参数:
HTTP-Vsersion 表示服务器HTTP协议的版本
Status-Code 表示服务器发回的响应状态代码
Reason-Phrase 表示状态代码的文本描述
3,HTTP响应状态码:
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能的取值
1xx:指示信息-表示请求已接收,继续处理
2xx:成功-表示请求已被成功接收、理解,接受
3xx:重定向-要瓦城请求必须进行跟进一步的操作
4xx:客户端错误-请求有语法错误后请求无法实现
5xx:服务器端错误-服务器未能实现合法的请求
常见HTTP响应状态码含义
状态码 含义
200 OK,请求已成功
302 请求的资源临时从不同的URL响应请求,由于这样的重定向是临时的
客户端应当继续向原有地址发送以后的请求
304 Not Modified 文档的内容(自上次访问以来或者根据请求的条件)并没有改变
400 Bad Request 语义有误,当前请求无法被服务器理解
401 Unauthorized 当前请求需要用户验证
403 Forbidden 服务器收到请求,但是拒绝提供此服务
404 Not Found 请求资源不存在
408 Request Timeout 请求超时
500 Internal Server Error 服务器发生不可预知的错误
503 Server Unavaliable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
4,302状态码演示
301 永久重定向,更改服务器配置,重启服务器,由旧域名转成新域名
302 临时重定向,不需要服务器配置,直接在PHP中修改,不是重大改变用302
//header函数:告诉浏览器如何做,浏览器收到这个临时跳转命令,会向新的地址发送请求
header("location:./delete.php");//302状态码
5,304状态码演示
304的含义:文件内容没有修改,不需要从服务器下载数据,直接从缓存读取
echo "<img src='./images/img1.jpg'>";
6,403状态码演示
含义:请求接受,但无权访问
对apache服务器设置的虚拟站点进行权限更改,在无权访问的情况下会报403的错误
7,404状态码演示
8,HTTP响应头含义
一个HTTP响应代表服务器给浏览器回送的数据,同时告诉浏览器应当怎样处理数据
响应报头名称 含义
Date 告诉浏览器,请求页面的时间
Server 服务器软件信息
Content-length 回送数据的字节数
Content-Type 回送内容的类型
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),
等同max-age的效果。但是如果同时存在,则被Cache-Control
的max-age覆盖
Pragma 缓存控制
Cache-Control 缓存控制
X-Powered-By 版权信息
Keep-Alive 连接类型
Location 响应报头域用于重定向到一个新的位置
Refresh 页面刷新时间
Last-modified 指定服务器上保存的最后修订时间
9,刷新并跳转
等待3s并跳转
header("refresh:3;url=./delete.php")