HTTP.

HTTP

URL【重点】

概述

Uniform Resource Locator 统一资源定位符

在万维网上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫 URL,是用于完整地描述 Internet 上网页和其他资源的地址的一种标识方法。简单地说,URL 就是常说的网址

格式【重点】

URL 的部分组成为:协议、主机、端口、路径、参数

URL的一般语法格式为:

protocol :// hostname:port/path/?parameters

protocol(协议)
指定使用的传输协议,最常用的是HTTP协议,它也是WWW中应用最广的协议。常见的还有 file:///,ftp://等。

hostname(主机名)
是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

port(端口号)
整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。

path(路径)
由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。此文件可以是任意格式,如文本、图片、音频、视频等

parameters(参数)
这是用于指定特殊参数的可选项。参数通过 = 连接,用键值对的形式标识,多个参数之间用 & 连接

【注意】强制要求以后所有的 URL 全部按照标准格式来写!!!

HTTP

概述

Hyper Text Transport Protocol: 超文本传输协议,是一个用于从web服务器传输超文本到本地浏览器的传送协议和标准

特点

  1. 基于请求/响应模型:客户端发起请求,服务器回送响应【重点】

  2. 简单快速:HTTP 比较简单,服务器的程序规模小,因此通信速度很快

  3. 灵活:HTTP 允许传输任意类型的数据对象

  4. 无连接:每次只处理一个请求,处理完请求后,接收到了客服端的应答后就立刻断开连接。客户端再次发送请求就是一个新的连接,节省了传输时间。

  5. 无状态:HTTP 是无状态协议。每次请求都是独立的,任何两个请求之间没有必然的联系

  6. 默认端口号:80【重点】

  7. 基于 TCP/IP 协议

请求传输数据的方式【重点】

HTTP请求的方法:HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

其中最常用的有两种:GETPOST

GET:用于请求指定的页面信息,并返回消息的主体
	1. 通过URL明文传递
	2. 数据传输不安全
	3. 数据传输有大小限制,一般在2KB左右
	4. 速度传输快
	5. 一般用于数据查询操作,百度搜索,Google搜索....
	
POST:用于指定的资源提交数据
	1. 通过【HTTP请求实体】完成数据传递
	2. 较为安全,需要其他技术进行数据加密
	3. 数据传输大小不限制
	4. 数据传输速度较慢
	5. 一般用于数据添加,删除,修改,登录验证...

响应状态码

状态码已定义范围描述
1XX100-101信息提示
2XX200-206成功
3XX300-305重定向
4XX400-415客户端错误
5XX500-505服务器错误

【重点】

200 OK!!!
302 重定向提示
404 Source Not Found 资源未找到!!!最常见错误!!!
500 服务器挂了!!!

Web容器是如何处理 HTTP 协议?

HTTP协议在Web容器这端主要表现为请求数据的到达以及响应数据的返回。于是Web容器将这两部分数据解释为两个对象,一个是与请求数据对应的 HttpServletRequest 对象,一个是与响应数据对应的 HttpServletResponse 对象。对于Servlet来讲,主要的业务逻辑过程就是从请求对象【HttpServletRequest】中获取数据,经过加工后将结果附着在响应对象【HttpServletResponse】中发送回客户端

扩展:HTTP 1.0 和 HTTP 1.1 的主要区别

HTTP 1.0 最早在网页中的使用是在 1996 年,那个时候只是使用一些较为简单的网页和网络请求上,而 HTTP 1.1 则在 1999 年才开始广泛应用于现在的各大浏览器网络请求中,同时 HTTP 1.1 也是当前使用最为广泛的 HTTP 协议。 两者的主要区别体现在长连接、新增了部分错误响应吗、缓存处理等。

长连接 : 在 HTTP/1.0 中,默认使用的是短连接,也就是每次请求都要重新建立一次连接。HTTP 是基于 TCP/IP 协议的,每一次建立或者断开连接,都需要三次握手四次挥手的开销,如果每次请求都要这样的话,开销会比较大,因此最好能维持一个长连接,可以用长连接来发多个请求。HTTP 1.1 起,默认使用长连接,如果在一定的时间内有多个请求发送,那么就使用同一个连接,减少了一定开销。

扩展:HTTP 请求头分析

GET 请求

案例代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>测试Post请求</title>
</head>
<body>
<form action="index.jsp" method="get">
    <label>姓名:
        <input type="text" name="name">
    </label>
    <input type="submit">
</form>
</body>
</html>

请求头信息

GET /Http_war_exploded/index.jsp?name=%E5%BC%A0%E4%B8%89 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/Http_war_exploded/test_post.html
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Cookie: JSESSIONID=0369EA4247A8535DC42221A1016E4EF6

案例分析

GET / HTTP/1.1
	请求方式为GET方法,请求的目标路径是/Http_war_exploded/index.jsp?name=%E5%BC%A0%E4%B8%89 ,目前采用的协议是HTTP 1.1 

Host: localhost:8080
	请求的主机地址,域名,主机名和端口号

Connection: keep-alive
	保持连接状态

Cookie: 
	很重要!!!在WEB项目中的【会话控制】浏览器本地保存的聊天记录
COOKIE_SESSION=7706_0_8_6_17_11_0_0_8_4_1_0_0_0_13_0_1585376605_0_1585384298%7C9%230_0_1585384298%7C1
POST 请求

案例代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>测试Post请求</title>
</head>
<body>
<form action="index.jsp" method="post">
    <label>姓名:
        <input type="text" name="name">
    </label>
    <input type="submit">
</form>
</body>
</html>

请求头信息

案例

POST /Http_war_exploded/index.jsp HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 0
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/Http_war_exploded/test_post.html
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Cookie: JSESSIONID=0369EA4247A8535DC42221A1016E4EF6

案例分析

POST /Http_war_exploded/index.jsp HTTP/1.1

	请求方式为POST方式,请求的资源是/Http_war_exploded/index.jsp,使用的HTTP协议为1.1协议
	
Host: localhost:8080
	请求去主机名,域名或者说是IP地址,8080是Tomcat服务器在当前电脑上的端口号
	
POST请求中存在一个请求实体,在浏览器开发者工具内可以看到

From Data
	name: 张三

扩展:HTTP 协议响应头分析

案例:百度页面

HTTP/1.1 200 OK
Bdpagetype: 2
Bdqid: 0xdb1fc9630002719a
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Sat, 28 Mar 2020 08:51:37 GMT
Expires: Sat, 28 Mar 2020 08:51:36 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=430; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1426_31170_21111_30842_31186_30824_31085_26350; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1585385497161029095415789560245623353754
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

案例分析

HTTP/1.1 200 OK
	响应数据使用的协议是HTTP1.1版本,状态码 200 OK
	
Server: BWS/1.1 
	当前服务器的版本名字和对应的编号
	
Date: Sat, 28 Mar 2020 08:51:37 GMT
	日期格林尼治时间,中国是+8区
	
Set-Cookie: BDSVRTM=430; path=/
	保存对应的Cookie信息,【会话控制技术】 
		BDSVRTM=430; BDSVRTM Cookie名字 430 Cookie数据
		path=/ 有效路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值