HTTP就是这么简单(下)

简介: 我们绝大多数的Web应用都是基于HTTP来进行开发的。我们对Web的操作都是通过HTTP协议来进行传输数据的。

HTTP首部简述

HTTP请求报文

HTTP请求报文:在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分组成。

17.jpg

  1. 请求行【描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号
  2. 首部字段【描述客户端请求哪台主机,以及客户端的一些环境信息等】
  3. 一个空行
  4. 实体内容【服务器向客户端回送的数据

首部字段例子:

  • Accept: text/html,image/* 【浏览器告诉服务器,它支持的数据类型】
  • Accept-Charset: ISO-8859-1 【浏览器告诉服务器,它支持哪种字符集
  • Accept-Encoding: gzip,compress 【浏览器告诉服务器,它支持的压缩格式
  • Accept-Language: en-us,zh-cn 【浏览器告诉服务器,它的语言环境】
  • Host: www.it315.org:80【浏览器告诉服务器,它的想访问哪台主机】
  • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT【浏览器告诉服务器,缓存数据的时间】
  • Referer: http://www.it315.org/index.jsp【浏览器告诉服务器,客户机是从那个页面来的---反盗链
  • 8.User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)【浏览器告诉服务器,浏览器的内核是什么】
  • Cookie【浏览器告诉服务器,带来的Cookie是什么
  • Connection: close/Keep-Alive 【浏览器告诉服务器,请求完后是断开链接还是保持链接】
  • Date: Tue, 11 Jul 2000 18:23:51 GMT【浏览器告诉服务器,请求的时间】

HTTP响应报文

HTTP响应报文:在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分组成。

18.jpg

  1. 一个状态行【用于描述服务器对请求的处理结果。
  2. 首部字段【用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据】
  3. 一个空行
  4. 实体内容【服务器向客户端回送的数据

状态行:

  • 格式: HTTP版本号 状态码 原因叙述
  • 状态行:HTTP/1.1 200 OK
  • 状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类

20.jpg

首部字段例子:

  • Location: http://www.it315.org/index.jsp 【服务器告诉浏览器要跳转到哪个页面
  • Server:apache tomcat【服务器告诉浏览器,服务器的型号是什么】
  • Content-Encoding: gzip 【服务器告诉浏览器数据压缩的格式
  • Content-Length: 80 【服务器告诉浏览器回送数据的长度】
  • Content-Language: zh-cn 【服务器告诉浏览器,服务器的语言环境】
  • Content-Type: text/html; charset=GB2312 【服务器告诉浏览器,回送数据的类型
  • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT【服务器告诉浏览器该资源上次更新时间】
  • Refresh: 1;url=http://www.it315.org【服务器告诉浏览器要定时刷新
  • Content-Disposition: attachment; filename=aaa.zip【服务器告诉浏览器以下载方式打开数据
  • Transfer-Encoding: chunked 【服务器告诉浏览器数据以分块方式回送】
  • Set-Cookie:SS=Q0=5Lb_nQ; path=/search【服务器告诉浏览器要保存Cookie
  • Expires: -1【服务器告诉浏览器不要设置缓存
  • Cache-Control: no-cache 【服务器告诉浏览器不要设置缓存
  • Pragma: no-cache 【服务器告诉浏览器不要设置缓存
  • Connection: close/Keep-Alive 【服务器告诉浏览器连接方式】
  • Date: Tue, 11 Jul 2000 18:23:51 GMT【服务器告诉浏览器回送数据的时间】

对于HTTP首部这一部分是非常庞大的一个章节,知识点也很多,我就没有一一去记录了。用到的时候再查吧。我看的是《图解HTTP》。

HTTPS简述

HTTP在安全上是不足的

  • 通信使用明文【没有加密过内容的】
  • 不验证通信方身份,无论是客户端和服务器,都是随意通信的
  • 无法证明报文的完整性【别人监听后,可以篡改】

我们一般在上网时,使用抓包工具就很容易获取到HTTP请求的信息了,这是TCP/IP在网络通信中无法避免的。

假设我们对HTTP报文进行加密了, 那也仅仅是是内容的加密。别人获取到了HTTP内容了,即使无法破解HTTP内容,还是能够篡改的。

我们最好就是使用SSL建立安全的通信线路,就可以在这条线路上进行HTTP通信了。

其实HTTPS就是披着SSL的HTTP...

HTTPS使用的是共享密钥和公开私有密钥混合来进行加密的。由于公开私有密钥需要太多的资源,不可能一直以公开私有密钥进行通信。因此,HTTP在建立通信线路的时候使用公开私有密钥,当建立完连接后,随后就使用共享密钥进行加密和解密了

对于认证方面,HTTPS是基于第三方的认证机构来获取认受认可的证书、因此,可以从中认证该服务器是否是合法的。

而客户端方面则需要自己购买认证证书、这实施起来难度是很大的【认证证书需要钱】。

所以,一般的网站都是使用表单认证就算了,这是用得最广泛的客户端认证了。


如果文章有错的地方欢迎指正,大家互相交流。

目录
相关文章
|
3月前
|
网络协议 安全 网络安全
什么是HTTP
什么是HTTP
63 0
|
3月前
|
网络协议 安全 网络安全
2.什么是HTTP
2.什么是HTTP
62 0
|
6月前
|
缓存 网络协议
01JavaWeb基础 - HTTP介绍
01JavaWeb基础 - HTTP介绍
23 0
|
5天前
|
算法 数据安全/隐私保护 UED
什么是HTTP2
【4月更文挑战第12天】HTTP/2是1999年后HTTP协议的首次重大更新,由IETF的httpbis小组开发。关键特性包括头部压缩(使用HPACK算法)、多路复用(提高效率,减少延迟)、二进制传输(更灵活高效)和支持服务器推送(优化用户体验)。虽然语义不变,但HTTP/2已广泛应用于gRPC等服务,并强制要求使用HTTPS。这一更新显著提升了Web性能和用户体验。
14 5
|
6月前
|
JSON 缓存 前端开发
|
9月前
|
缓存 网络协议 C++
HTTP1.0 vs HTTP1.1 vs HTTP2.0
HTTP1.0 vs HTTP1.1 vs HTTP2.0
63 0
|
Web App开发 存储 网络协议
Http中你必须知道那点事
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容,如下图所示:
75 0
Http中你必须知道那点事
|
网络协议 安全 应用服务中间件
HTTP是什么?HTTP又不是什么?
HTTP是什么?HTTP又不是什么?
235 0
HTTP是什么?HTTP又不是什么?
|
存储 缓存 网络协议
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
简单的说是,超过普通文本。但具体一些,咋们说的普通文本一般是值文字组成的文章。但是在网页中,有这么一种文本,可以是文本、图片、音频、视频等组成。但是最关键的是里面还可以有超链接,从一个文本跳转到另外一个文本。
HTTP/1.0 HTTP/1.1、HTTP/2、HTTP/3 都做了啥
|
网络协议 前端开发 JavaScript
什么是http?
“超文本”这个词经常会引起误解,让人以为HTTP只能传输文本文件,个人觉得可能改名叫“超媒体传输协议”更加恰当。 本文对“协议”的解释比较通俗,严格来说协议应该包括语法、语义、同步规则和错误处理 我们通常使用浏览器访问的实际上是万维网(WWW),他是互联网(Internet)的一部分,但现在几乎很少有人能区分两者。
117 0
什么是http?