HTTP协议 + Tomcat

355 阅读4分钟

协议格式:

image.png

主要方法:

GET:发送请求 一般没有body,数据放在query string中,也就是url中?后面的字符串。

POST:传输实体主体 一般有body,数据放在body中。

HTTP请求可以被认为分成四个部分:

1.首行:请求首行主要包含方法,URL,版本号;响应首行包含版本号,状态码,状态码描述

2.请求头(header)

3.空行

4.正文(body)

GET 和 POST 的区别?(经典面试题)

1.GET也可以给服务器传递一些信息,GET传递的信息一般都是放在query string. POST传递消息则是通过body。

2.语义上的差别,GET一般是从服务器获取数据,POST则是给服务器提交数据,例如登录时提交的账户信息和密码。

3.GET通常被设计成幂等的(同样的请求,返回同样的数据),POST则不做要求。

4.GET可以被缓存的,而POST则一般不能缓存。

认识请求头:

image.png

Host:描述了服务器所在的ip地址(域名)和端口

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

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

如果是GET请求,那么没有body,也就没有这两个字段,如果是POST请求则必须有这两个字段。

image.png

User-Agent:描述了浏览器和操作系统的版本,现在主要是用来区分PC和移动端。

Referer:描述了当前页面的“来源”,也就是当前页面从哪个页面跳转的,没有跳转的页面没有该键值对。

cookie:本质上是浏览器给网页提供的存储本地数据的机制。

cookie从哪里来?

Cookie 中的数据是来自于服务器,服务器会通过HTTP响应的报头部分(Set-Cookie字段)发送cookie,服务器来决定,浏览器的Cookie要存什么。

cookie是存在哪里的? 存在浏览器中,根据浏览器和域名进行区分。

cookie要到哪里去? 回到服务器中,cookie中存储当前浏览器的“上下文”信息。

http响应中状态码的意义:

image.png

常见响应码:

200 成功

404 Not Found 访问的资源不存在

403 Forbidden 访问被拒绝,没有访问权限

302 重定向

500 服务器内部错误,服务器代码抛异常

504 gateway timeout 网络延迟过长

重定向和请求转发的区别?

重定向是返回给客户端一个新的地址,客户端重新访问新地址;

请求转发是服务器代为访问新地址。

如何构造HTTP请求?

  1. 直接在浏览器地址栏输入网址

2.点击收藏夹的网址

3.html中的link/Script/img/a

4.通过form表单构造:

image.png

image.png

image.png

image.png

5.通过jquery提供的ajax():

image.png

6.使用第三方软件:postman

image.png

HTTPS相关的密码学介绍:

进行安全传输,核心就是对数据进行加密:

a(明文) + key(密钥) = b(密文) 加密的过程

b(密文) + key(密钥) = a(明文) 解密的过程

  1. 对称加密算法

即,加密和解密使用相同的密钥。

假设由客户端生成密钥,将密钥传输给服务器:

image.png

对于上述问题,主要是解决如何将密钥安全的传输给服务器,因此引入了非对称加密算法:

image.png

其中,公钥是公开的,私钥是私有的。

此时,由服务器生成一对密钥,将公钥发送给所有的客户端,私钥自己保存:

image.png

此时,网络黑客由于没有私钥,得到加密后的数据后无法解密,但是,这个时候仍然存在安全风险:中间人攻击

image.png

要想解决中间人攻击问题的关键在于确认公钥是来自服务器,而不是非法的第三方,因此引入了数字证书:

image.png

Tomcat

java圈子中最知名的http服务器。

下载:

image.png

image.png

文件目录介绍:

image.png

启动tomcat:

在bin目录下,找到该程序:

image.png

双击运行:图示代表启动成功

image.png

关闭服务器:ctrl + c(直接杀进程),也可以通过bin目录下的shutdown来关闭服务器。

部署一点前端代码感受服务器:

webapps目录下原有的文件夹:

image.png

将博客前端代码目录复制到该目录webapps下,启动服务器,在浏览器中访问博客系统:

image.png