【JavaWeb篇】三分钟学会HTTP协议(面试必会)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
1.什么是HTTP协议
HTTP 协议一般指 HTTP超文本传输协议
。所有的 WWW 文件都必须遵守这个标准。
HTTP 负责 web 服务器
与 web 浏览器
之间的通信用于从 web 客户端浏览器向 web 服务器发送请求并从 web 服务器向 web 客户端返回内容网页。
HTTP
是基于 TCP/IP
通信协议来传递数据的HTML 文件、图片文件、查询结果等。
2.HTTP请求 URL
HTTPS 经由 HTTP 进行通信但利用 SSL/TLS 来加密数据包HTTPS 开发的主要目的是提供对网站服务器的身份认证保护交换资料的隐私与完整性。
URL包含了用于查找某个资源的足够的信息。
HTTP 的 URL 是由 http:// 起始与默认使用端口 80而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443。
3.HTTP的工作原理
HTTP 协议工作于客户端-服务端架构上浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求Web 服务器根据接收到的请求后向客户端发送响应信息。
但是需要注意一下几点
HTTP 是无连接
限制每次连接只处理一个请求服务器处理完客户的请求并收到客户的应答后即断开连接节省传输时间。HTTP 是媒体独立的
只要客户端和服务器知道如何处理的数据内容任何类型的数据都可以通过HTTP发送。HTTP 是无状态的
HTTP 协议是无状态协议无状态是指协议对于事务处理没有记忆能力缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大另一方面在服务器不需要先前信息时它的应答就较快。
总的来说HTTP通信包含了四个步骤1.客户与服务器建立连接 2.客户向服务器提出请求 3.服务器接收请求并根据请求返回相应的文件作为应答 4.客户与服务器关闭连接。
4.HTTP请求
客户端通过发送HTTP请求向服务器请求对资源的访问。
http请求由请求行消息报头请求正文三部分构成。
访问http:/baidu.com打开浏览器的f12开发者模式
4.1 HTTP请求数据格式
图HTTP数据请求格式
HTTP请求行
请求行是请求数据的第一行请求行以方法字段开始后面分别是URL
字段和HTTP
协议版本字段并以CRLF
结尾。
HTTP请求头
消息报头由一系列的键值对组成允许客户端向服务器端发送一些附加信息或者客户端自身的信息主要包括
Host
: 表示请求的主机名User-Agent
: 浏览器版本例如Chrome浏览器的标识类似Mozilla/5.0 …Chrome/79
IE浏览器的标识类似Mozilla/5.0 (Windows NT …) like GeckoAccept
表示浏览器能接收的资源类型如text/*image/或者/*表示所有Accept-Language
表示浏览器偏好的语言服务器可以据此返回不同语言的网页Accept-Encoding
表示浏览器可以支持的压缩类型例如gzip, deflate等。
HTTP请求体
只有在发送POST
请求时才会有请求正文GET
方法并没有请求正文。
例如
4.2 HTTP请求方法
根据 HTTP
标准HTTP 请求可以使用多种请求方法HTTP1.0
定义了三种请求方法 GET, POST 和 HEAD 方法。
HTTP1.1
新增了六种请求方法OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
9种请求方法
方法 | 描述 |
---|---|
GET | 请求指定的页面信息并返回实体主体。 |
POST | 向指定资源提交数据进行处理请求例如提交表单或者上传文件。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
HEAD | 类似于 GET 请求只不过返回的响应中没有具体的内容用于获取报头 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充用来对已知资源进行局部更新 。 |
5.HTTP响应
在接收和解释请求消息后服务器会返回一个HTTP响应消息。
HTTP响应也由三部分组成包括状态行消息报头响应正文。
5.1 HTTP响应状态行
状态行也由三部分组成包括HTTP
协议的版本状态码以及对状态码的文本描述。例如
5.2 HTTP响应状态码
当浏览者访问一个网页时浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。
HTTP状态码由三个十进制数字组成第一个十进制数字定义了状态码的类型后两个数字没有分类的作用。分别是
1xx
响应中 - 表示请求已接收继续处理2xx
成功 - 表示请求已被成功接收、理解、接受3xx
重定向 - 要完成请求必须进行更进一步的操作4xx
客户端错误 - 请求有语法错误或请求无法实现5xx
服务器端错误 - 服务器未能实现合法的请求
常见的状态码
200 OK
:请求成功。一般用于 GET 与 POST 请求404 Not Found
: 服务器无法根据客户端的请求找到资源网页。通过此代码网站设计人员可设置"您所请求的资源无法找到"的个性页面501 Not Implemented
:服务器不支持请求的功能无法完成请求
6.HTTPS
那么HTTP
传输协议有什么缺点呢
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
- …
HTTP 协议中没有加密机制
但可以通 过和 SSL
(Secure Socket Layer, 安全套接层 )或 TLS
(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP
的通信内容。属于通信加密即在整个通信线路中加密。
HTTP + 加密 + 认证 + 完整性保护 = HTTPSHTTP Secure
HTTPS
采用共享密钥加密对称和公开密钥加密非对称两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
所以应充分利用两者各自的优势, 将多种方法组合起来用于通信。 在交换密钥阶段使用公开密钥加密方式,之后的建立通信交换报文阶段 则使用共享密钥加密方式。