Linux学习79 http协议高级进阶
一、回顾
1、配置
二、http协议和httpd的配置
1、URL:统一资源定位符(Unifrom Resource Locator)
a、URL方案:scheme
b、服务器地址:ip:port
c、资源路径:/images/banner.jpg
http://www.wohaoshuai.com:80/bbs/index.php
https://
d、基本语法:
e、相对URL
f、绝对URL
2、http协议:
a、http/0.9,http/1.0,http/1.1,http/2.0
b、http协议:stateless(无状态)
我们http协议是无状态的,为了追踪用户的活动和身份我们要使用cookie和session
3、http事务
a、请求:request
b、响应:response
c、报文语法格式:
(1)、request报文
<method><request-URL><version>
<HEADERS>
<entity-body> #报文响应行
(2)、response报文
<version><status><reason-phrase>
<HEADERS>
<entity-body>
(3)、字段解释
1)、method:请求方法,标明客户端希望服务器对资源执行的动作
常见方法:GET,HEAD(测试资源能否进行GET请求的,拿到资源后不会显示<entity-body>这部分),POST
PUT:这个方法不是很安全,一般要使用PUT方法我们服务器需要开启DAV才行
DELETE:删除
TRACE:追踪资源请求经过了多少个代理
OPTIONS:探测资源所支持的方法的方法
2)、version:HTTP版本号
HTTP/<major><minor>
3)、status:向客户端用预先报告的行为来尝试告诉客户端本次访问是成功了还是失败了,用户不用看后面的<entity-body>部分就能知道是成功了还是失败了
三位数字:如200,301,302,404,502;标记请求处理过程中发生的情况
4)、reason-phrase:即前面响应码的解释,表示为什么是这个响应码
状态码所标记的状态的简要描述
5)、headers:每个请求或响应报文可包含任意个首部;每个首部都有首部名称,后面跟一个冒号,而后跟上一个可选空格,接着是一个值
6)、entity-body:请求时附加的数据或响应时附加的数据
d、method(方法):
(1)、GET:从服务器获取一个资源
(2)、HEAD:只从服务器获取文档的响应首部
(3)、POST:向服务器发送要处理的数据
(4)、PUT:将请求的主体部分存储在服务器上
(5)、DELETE:请求删除服务器上指定的文档
(6)、TRACE:追踪请求到达服务器中间经过的代理服务器
(7)、OPTIONS:请求服务器返回对指定资源支持使用的请求方法
(8)、协议查看或分析的工具
tcpdump,tshark,vireshark
e、status(状态码):
(1)、1xx:100-101,信息提示
(2)、2xx:200-206,成功
(3)、3xx:300-305,重定向
(4)、4xx:400-415,错误类信息,客户端错误
(5)、5xx:500-505,错误类信息,服务器端错误
(6)、常用的状态码
200:成功,请求的所有数据通过响应报文的entity-body部分发送;OK
301:请求的URL指向的资源已经被删除,但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302:与301相似,但在响应报文中通过Location指明资源现在所处临时新位置;Fount
304:客户端发出了条件式请求,如果服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified
401:需要输入账号和密码认证方能访问资源;Unauthorized。做basic认证时需要认证就是这个状态码
403:请求被禁止;Forbidden
404:服务器无法找到客户端请求的资源;Not Found
500:服务器内部错误;Internal Server Error
502:代理服务器从后端服务器收到了一条伪响应;Bad Gateway
f、headers
(1)、格式
(2)、首部分类
1)、通用首部
2)、请求首部
3)、响应首部
4)、实体首部
5)、扩展首部
g、Cookie
为了能够让服务端追踪客户端,客户端第一次访问服务器时服务器会响应一个SetCookie告诉客户端我给你分配了一个唯一的编号,所以客户端会自动的用浏览器缓存在浏览器的缓存空间中,即放在一个小文件中,这个文件我们通常称之为Cookie文件,随后每一个cookie文件有他的适用范围,注意每一个cookie只对一个站点有效,甚至于一个cookie只对一个站点的一个URL有效。随后当用户使用这个浏览器访问同一个站点或同一个站点的某个URL的时候浏览器会自动的把这个cookie带上然后发送给服务端,服务端一看这个cookie是此前自己发出的,而且追踪保留了用户此前的浏览行为。那么用户此前访问过什么什么就能知道了。在服务端追踪的这段信息我们通常就称之为session,服务端一般会将其放在磁盘或者内存中持久保留的。所以即便客户端关机了,cookie只要不删,下一次用户打开浏览器登陆都可以正常访问。