HTTP 超文本传输协议

实验拓扑图

1Client-PC,默认密码为Cisc0123    2Server,默认用户名为root,默认密码为Cisc0123

一、HTTP概述

  1. 万维网的组成模块
    1. 网页:用于存放信息的文件
    2. 服务器:将网页进行统一的存放
    3. 客户端:阅读网页的计算机被称为“Web客户端
    4. 浏览器:查看网页的程序称为“Web浏览器
  1. 万维网的工作原理
    1. 客户端和服务器之间,使用“HTTP”协议来发送和接收数据包,HTTP工作在TCP/80端口。
    2. 使用统一资源定位符“URL”,来定位访问资源的位置,如下:
http://www.baidu.com/baiduyun.html
    1. 用于编写网页的语言,就是文本标记语言“HTML”
<!DOCTYPE html>
<html>
网页内容
</html>

二、 超文本传输协议

  1. 客户端与服务器C/S
    1. 使用HTTP协议时,必定一端是客户端角色,一端是服务器角色。
    2. 请求必定从客户端发送,而服务器回复响应。
  2. 网页分析工具

“Fiddler Web Debugger”

  1. 无状态化协议
    1. HTTP是一种不保存状态,即无状态协议

              2. HTTP协议自身不对请求和响应之间的通信状态进行保存

  1. 解决该问题的方法有两个:

① 隐含参数

Cookie(主流

  1. 先讲隐含参数是如何保存HTTP数据的:

如图,通过隐含参数将用户输入的内容或执行的操作发送到下一个网页去

三、 HTTP-方法

  1. GET
    1. 方法“GET”,向Web服务器请求一个文件。
    2. 如果请求的资源是文本,那就保持原样返回。
    3. 如果是像 CGI(通用网关接口)那样的程序,则返回经过执行后的输出结果。
    4. 注意:GET 将用户在网页中输入的内容直接添加到URL后面来进行转发

GET http://web1.apache.com/HTTP-Basic/03-1.html HTTP/1.1
  1. POST
    1. 方法POST,向Web服务器发送数据让Web服务器进行处理。
    2. 与方法GET非常类似,所以会在后面详解对比“GET”“POST”的不同。

  1. 什么情况下用GET,什么情况下用POST
1.发送的请求符合以下任一条件时,统一使用POST,反之,则使用GET
1> 请求中包含数据更新等“副作用”时
2> 发送敏感信息时
3> 发送信息量很多时

2.什么是“副作用”?
1> 指除了获取资源以外的其它操作
2> 例如,追加、更新、删除服务器端的数据、购买商品、注册/删除用户的操作
3> 总之,更新类的操作必须使用POST
  1. 其它HTTP方法

方法

说明

支持的HTTP协议版本

GET

获取资源

1.0、1.1

POST

传输实体主体

1.0、1.1

PUT

传输文件

1.0、1.1

HEAD

获得报文首部

1.0、1.1

DELETE

删除文件

1.0、1.1

OPTIONS

询问支持的方法

1.1

TRACE

追踪路径

1.1

CONNECT

要求用隧道协议连接代理

1.1

LINK

建立和资源之间的联系

1.0

UNLINE

断开连接关系

1.0

四、 HTTP-特性

  1. 四大特点

        1)哑服务

HTTP协议不会主动提供任何服务,必须客户端发起请求

        2)瞬时协议

一个请求,一个应答,连接断开,新的请求则需要建立新的连接

        3)持久连接

在一个TCP连接的基础之上,发送多个不同的请求,第二个请求必须等到第一个请求完成后才能进行

        4)管道化

在一个TCP连接的基础之上,同时发送多个不同的请求

  1. Cookie
    1. 通过一个例子来说明“Cookie”工作原理

抓包分析如下

五、 HTTP-报文

  1. 这一章节主要是让学员了解一下报文的架构即可。

  1. 可以没有报文主体,例如HTTP请求,但是不能没有报文首部。

六、 HTTP-状态码

  1. 状态码的作用
    1. 当客户端向服务器端发送请求时,描述返回的请求结果。
    2. 借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
  1. 状态码的分类

类别

原因短语

1XX

Informational(信息性状态码)

接收的请求正在处理

2XX

Success(成功状态码)

请求正常处理完毕

3XX

Redirection(重定向状态码)

需要进行附加操作以完成请求

4XX

Client Error(客户端错误状态码)

服务器无法处理请求

5XX

Server Error(服务器错误状态码)

服务器处理请求出错

3.2XX状态码

1200 OK 代表一切正常

2204 No Content 代表网页没有任何变化

3206 Partial Content

1.针对大文件实现片段获取,例如
1> 几百页的PDF,只按需求显示30-35页
2> 十几小时的视频,只按需求缓冲2小时35分-3小时10分的时间段

4.3XX状态码

1301 Moved Permanently 永久重定向

2302 Found,临时重定向,多用于防火墙的网页认证

3303 See Other,用于结合302重定向使用

4304 Not Modified,访问主页,刷新即可出效果,304与重定向没任何关系

5META 重定向,直接通过HTML调用该功能即可,与状态码无关

5.4XX状态码

1400 Bad Request,服务器无法理解客户端发送的请求

2401 Unauthorized,访问的页面需要认证

3403 Forbidden,访问一个没有权限访问的资源,被服务器拒绝

4404 Not Found 请求一个不存在的资源

6.5XX状态码

1500 Internal Server Error 服务器内部错误,可能是网页编写存在错误

2503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

3502 Fiddler - DNS Lookup Failed DNS解析失败

七、 HTTP-首部

  1. 通用首部字段
    1. 定义

                即HTTP请求和应答中均可能出现的字段。

  1. 常见的通用首部字段

首部字段名

说明

Cache-Control

控制缓存的行为

Connection

逐跳首部、连接的管理

Date

创建报文的日期时间

Pragma

报文指令

Trailer

报文末端首部一览

Transfer-Encoding

指定报文主体的传输编码方式

Upgrade

升级为其它协议

Via

代理服务器的相关信息

Warning

错误通知

通用首部字段:Connection
1.HTTP1.1为了解决1.0版本瞬时协议的问题,提出持久连接技术“Keep Alive” 2.如果想要让“Keep Alive”技术向下兼容1.0,需要使用“Connection”进行发送
3.当客户端想要断开连接时,发送“Close”即可断开

通用首部字段:Upgrade
1.用于检测HTTP协议及其他协议是否可使用更高的版本进行通信

通用首部字段:Warning
1.通常会告知用户一些与缓存相关的问题的警告
  1. 请求首部字段
    1. 定义        只会出现在HTTP请求中的字段。
  2. 常见的请求首部字段

首部字段名

说明

Accept

用户代理可处理的媒体类型

Accept-Charset

优先的字符集

首部字段名

说明

Accept-Encoding

优先的内容编码

Accept-Language

优先的语言(自然语言)

Authorization

Web认证信息

Expect

期待服务器的特定行为

From

用户的电子邮箱地址

Host

请求资源所在服务器

If-Match

比较实体标记(ETag)

If-Modified-Since

比较资源的更新时间

If-None-Match

比较实体标记(与If-Match相反)

If-Range

资源未更新时发送实体Byte的范围请求

If-Unmodified-Since

比较资源的更新时间(与If-Modified-Since相反)

Max-Forwards

最大传输逐跳数

Proxy-Authorization

代理服务器要求客户端的认证信息

Range

实体的字节范围请求

Referer

对请求中URI的原始获取方

TE

传输编码的优先级

User-Agent

HTTP客户端程序的信息

请求首部字段:Host
1.用于客户端告知服务器,请求的资源所处的互联网主机名和端口号
2.Host首部字段在HTTP/1.1规范内是唯一一个必须被包含在请求内的首部字段

请求首部字段:Referer
1.用于客户端告知服务器请求的原始资源的URI


请求首部字段:User-Agent
1.通过“User-Agent”字段,客户端会将创建请求的浏览器和用户代理名称等信息传达给服务器
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:86.0) Gecko/20100101 Firefox/86.0
1> Windows NT 6.1 代表请求发起者为“Windows系统”
2> Firefox/86.0	代表发起请求的浏览器和版本
  1. 响应首部字段
    1. 定义        只会出现在HTTP应答中的字段。
  2. 常见的响应首部字段

首部字段名

说明

Accept-Ranges

是否接受字节范围请求

Age

推算资源创建经过时间

ETag

资源的匹配信息

Location

令客户端重定向至指定URI

Proxy-Authenticate

代理服务器对客户端的认证信息

Retry-After

对再次发起请求的时机要求

Server

HTTP服务器的安装信息

Vary

代理服务器缓存的管理信息

WWW-Authenticate

服务器对客户端的认证信息

响应首部字段:Location
1.使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源
2.常见应用例如配合重定向实现重定向认证

响应首部字段:Server
1.用于服务器告知客户端当前服务器上安装的HTTP服务器应用程序的信息
2.不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启用的可选项
Server: Apache/2.2.15 (CentOS)
为了避免Server字段暴露过多信息,可以通过以下方法进行抑制
[root@MySQL ~]# cd /etc/httpd/conf [root@MySQL conf]# vim httpd.conf ServerTokens OS
# 添加以下内容
ServerTokens Prod # 保存退出后重启服务
[root@MySQL conf]# service httpd restart
再次查看,发现抑制成功
Server: Apache


响应首部字段:WWW-Authenticate 1.该字段用于HTTP访问认证。
  1. 实体首部字段
    1. 定义         实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部。
  2. 常见的实体首部字段

首部字段名

说明

Allow

资源可支持的HTTP方法

Content-Encoding

实体主体适用的编码方式

Content-Language

实体主体的自然语言

Content-Length

实体主体的大小(单位:字节)

Content-Location

替代对应资源的URI

Content-MD5

实体主体的报文摘要

Content-Range

实体主体的位置范围

首部字段名

说明

Content-Type

实体主体的媒体类型,防火墙过滤

Expires

实体主体过期的日期时间

Last-Modified

资源的最后修改日期时间

  1. Cookie服务的首部字段

1)主要有两个

Set-Cookie

Cookie

2)关于“Set-Cookie”,最主要的两个字段

Secure

仅在HTTPS安全通信时才会发送Cookie

HttpOnly

加以限制,使Cookie不能被JavaScript脚本(不安全)访问

如何在服务器上激活该功能? [root@MySQL etc]# cd /etc [root@MySQL etc]# vim php.ini


# Secure字段未修改前,默认未激活
; http://php.net/session.cookie-secure
; session.cookie_secure =


# 若要激活Secure字段,则修改如下
; http://php.net/session.cookie-secure session.cookie_secure = on

# HttpOnly字段未修改前,默认未激活
; http://php.net/session.cookie-httponly session.cookie_httponly =

# 若要激活HttpOnly字段,则修改如下
; http://php.net/session.cookie-httponly

八、第八章 HTTPS-协议

此章节

九、第九章 HTTP-认证

  1. 基础认证
    1. 服务器回复内容中,包含以下标记,代表认证方式为基础认证
WWW-Authenticate: Basic realm="Basic Authentication"

​​​​​​​        ​​​​​​​      2. 客户端做基础认证,以“明文方式发送用户名和密码

Authorization: Basic YWRtaW46Y2lzY28=
Authorization Header is present: Basic YWRtaW46Y2lzY28= Decoded Username:Password= admin:cisco
  1. 摘要认证
    1. 工作原理

  1. 服务器回复内容中,包含以下标记,代表认证方式为摘要认证
WWW-Authenticate: Digest realm="Restricted area",qop="auth",nonce="6250f04a4a011"
  1. 客户端做摘要认证,以明文方式发送用户名,密码会和随机数做哈希生成散列值发送
Authorization: Digest username="admin", realm="Restricted area", nonce="6250f04a4a011", uri="/HTTP-Basic/13-1.php", response="7427ac0bbbcf059886b4b4568eeda694",
  1. 表单认证
    1. 工作原理

网页输入用户名密码,发起请求,请求通过PHP发送到数据库,进行验证。

               2. 源代码

客户端输入用户名的源代码

<form action="14-2.php" method="POST">
<font size="6.5" color="black"> 帐号 <input type="text" name="name" value="HuangGB" style="font-size:25px"><br>
<font size="6.5" color="black"> 密码 <input type="text" name="pwd"	value="huawei@123" style="font-size:25px"><br>

服务器连接数据库校验用户名密码是否正确源代码

<?php
session_start();
$name = @$_POST['name'];
$pwd = @$_POST['pwd'];
$con	= pg_connect("host=10.1.1.10 dbname=hciesec user=postgres password=huawei@123");
$sql	= "SELECT * FROM USERS WHERE name ='$name' and pwd = '$pwd'";
$rs	= pg_query($con, $sql);
?>


<html>
<body>
<?php
if (pg_num_rows($rs) > 0) {
        $_SESSION['name'] = $name;
        $_SESSION['pwd'] 
        echo '登录成功'; 
        else {
            echo '登录失败';
        }
pg_close($con);
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栀寒老醑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值