javaWeb---HTTP/HTTPS详解

目录

一、HTTP协议

1.什么是HTTP协议

1.了解http协议

2.超文本

二、HTTP协议格式

1.HTTP请求格式(GET/POST)

1.为什么HTTP报文中有空行的存在 :

2.常见的请求头:

2.HTTP响应格式

1.HTTP响应常见的状态码

2.常见的响应头(基本和请求头含义一样):

3.GET请求与POST请求的区别

三、Cookie和Session

1.什么是Cookie

2.什么是Session

3.Cookie和Session如何配合工作

4.Cookie和Session的区别

四、HTTPS

1.HTTPS的优缺点

1.优点:安全性

2.缺点:

2.HTTPS原理

1.加密流程

2.HTTPS 工作过程中涉及到的密钥有三组: 

总结


一、HTTP协议

1.什么是HTTP协议

HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议。HTTP 往往是基于传输层的 TCP 协议实现的.(HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现)。

1.了解http协议

当我们在浏览器中输入一个搜狗搜索的 "网址" (URL) 时, 浏览器就给搜狗的服务器发送了一个 HTTP 请求, 搜狗的服务器返回了一个 HTTP 响应。

这个响应结果被浏览器解析之后, 就展示成我们看到的页面内容. (这个过程中浏览器可能会给服务器发送多个 HTTP 请求, 服务器会对应返回多个响应, 这些响应里就包含了页面 HTML, CSS, JavaScript, 图片, 字体等信息)。

2.超文本

所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些 其他的资源, 比如图片, 视频, 音频等二进制的数据。

二、HTTP协议格式

1.HTTP请求格式(GET/POST)

  1. 请求行(请求方法+URI协议+版本)

  2. 请求头部

  3. 空行

  4. 请求主体(对于GET请求来所,一般没有请求体,而post请求可以带上请求体

GET /sample.jsp HTTP/1.1                                                                  //请求行

Accept:image/gif.image/jpeg,                                                             // 请求头部

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate

username=jinqiao&password=1234                                                 //请求主体 

1.为什么HTTP报文中有空行的存在 :

因为 HTTP 协议并没有规定报头部分的键值对有多少个, 空行就相当于是 "报头的结束标记", 或者 是 "报头和正文之间的分隔符"。

2.常见的请求头:

Host :表示服务器主机的地址和端口。

Content-Length: 表示 body 中的数据长度。

Content-Type :表示请求的 body 中的数据格式。

User-Agent (简称 UA): 表示浏览器/操作系统的属性。

Cookie:Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)。

2.HTTP响应格式

  1. 状态行(版本+状态码+原因短语)

  2. 响应首部

  3. 空行

  4. 响应主体

1.HTTP响应常见的状态码

1.200 OK 这是一个最常见的状态码, 表示访问成功。 

2.404 Not Found 没有找到资源

3.403 Forbidden 表示访问被拒绝(可能是权限不够)

4.405 Method Not Allowed 表示服务器支持此访问方法(GET、POST...)

5.500 Internal Server Error 服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码。

6.504 Gateway Timeout 当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况。

7.302 temporarily 临时重定向,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面。

8.301 Moved Permanently 永久重定向,请求的网页已永久移动到新位置。 服务器返回此响应时,会自动将请求者转到新位置。响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面。

2.常见的响应头(基本和请求头含义一样):

1.Content-Type 常见的取值

text/html : body 数据格式是 HTML

text/css : body 数据格式是 CSS

application/javascript : body 数据格式是 JavaScript

application/json : body 数据格式是 JSON

2.Content-Length: 表示 body 中的数据长度。

3.GET请求与POST请求的区别

首先它们的语义不同:GET是获取的语义;POST是提交的语义

具体表现:

1.标准中规定:GET不应该带有请求体,POST可以带有请求体。

2.对于请求参数:GET请求放在查询字符串中,POST请求放在查询字符串中或请求体中(form表单);由于浏览器的限制,URL长度的限制短于请求体的限制;URL一般总会记录在日志中,请求体不会记录在日志中。

3.GET、PUT、DELETE是幂等的,其中GET是无副作用的,PUT、DELETE是有副作用的;POST不是幂等的。无副作用一定是幂等的,但是幂等的不一定是无副作用。

幂等:不管执行多少次,都会得到相同的结果。

副作用:执行时会不会影响数据。

两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。 HTTP PUT方法用于创建或更新操作,所对应的URI是要创建或更新的资源本身,有副作用,它应该满足幂等性。

由于GET与POST 的幂等性不同:

现象1:GET请求,直接刷新浏览器,浏览器就自动发送请求了。POST请求,刷新浏览器,有的浏览器会提示用户确定要重新发送一次POST请求吗。

现象2:HTTP支持缓存,为了提升访问速度。但是GET请求支持缓存,POST不支持缓存。

三、Cookie和Session

1.什么是Cookie

HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

2.什么是Session

Session 代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。

3.Cookie和Session如何配合工作

用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session ,请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名。

当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

4.Cookie和Session的区别

1.作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。

2.存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。

3.有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。

4.隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。

5.存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。

四、HTTPS

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层。 HTTP 协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况。

1.HTTPS的优缺点

1.优点:安全性

1.使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

2.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

3.HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

2.缺点:

1.在相同网络环境中,HTTPS 相比 HTTP 无论是响应时间还是耗电量都有大幅度上升。

2.HTTPS 的安全是有范围的,在黑客攻击、服务器劫持等情况下几乎起不到作用。

3.在现有的证书机制下,中间人攻击依然有可能发生。

4.HTTPS 需要更多的服务器资源,也会导致成本的升高。

2.HTTPS原理

简要的说,就是使用非对称加密解决对称加密的密钥传输,之后真正的数据使用对称加密。

对称加密:

加密(明文 + 密钥1) =  密文

解密(密文 + 密钥1) =  明文

非对称加密:

加密(明文 + 密钥1) = 密文

解密(密文 + 密钥2) = 明文

1.加密流程

 

2.HTTPS 工作过程中涉及到的密钥有三组: 

第一组(非对称加密): 用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥) 服务器使用这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过。

第二组(非对称加密): 用于协商生成对称加密的密钥,服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端,然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥。

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。


总结

加油哦~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值