协议格式:
主要方法:
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则一般不能缓存。
认识请求头:
Host:描述了服务器所在的ip地址(域名)和端口
Content-Length:表示body中的数据长度。
Content-Type:表示请求的body中的数据格式。
如果是GET请求,那么没有body,也就没有这两个字段,如果是POST请求则必须有这两个字段。
User-Agent:描述了浏览器和操作系统的版本,现在主要是用来区分PC和移动端。
Referer:描述了当前页面的“来源”,也就是当前页面从哪个页面跳转的,没有跳转的页面没有该键值对。
cookie:本质上是浏览器给网页提供的存储本地数据的机制。
cookie从哪里来?
Cookie 中的数据是来自于服务器,服务器会通过HTTP响应的报头部分(Set-Cookie字段)发送cookie,服务器来决定,浏览器的Cookie要存什么。
cookie是存在哪里的? 存在浏览器中,根据浏览器和域名进行区分。
cookie要到哪里去? 回到服务器中,cookie中存储当前浏览器的“上下文”信息。
http响应中状态码的意义:
常见响应码:
200 成功
404 Not Found 访问的资源不存在
403 Forbidden 访问被拒绝,没有访问权限
302 重定向
500 服务器内部错误,服务器代码抛异常
504 gateway timeout 网络延迟过长
重定向和请求转发的区别?
重定向是返回给客户端一个新的地址,客户端重新访问新地址;
请求转发是服务器代为访问新地址。
如何构造HTTP请求?
- 直接在浏览器地址栏输入网址
2.点击收藏夹的网址
3.html中的link/Script/img/a
4.通过form表单构造:
5.通过jquery提供的ajax():
6.使用第三方软件:postman
HTTPS相关的密码学介绍:
进行安全传输,核心就是对数据进行加密:
a(明文) + key(密钥) = b(密文) 加密的过程
b(密文) + key(密钥) = a(明文) 解密的过程
- 对称加密算法
即,加密和解密使用相同的密钥。
假设由客户端生成密钥,将密钥传输给服务器:
对于上述问题,主要是解决如何将密钥安全的传输给服务器,因此引入了非对称加密算法:
其中,公钥是公开的,私钥是私有的。
此时,由服务器生成一对密钥,将公钥发送给所有的客户端,私钥自己保存:
此时,网络黑客由于没有私钥,得到加密后的数据后无法解密,但是,这个时候仍然存在安全风险:中间人攻击
要想解决中间人攻击问题的关键在于确认公钥是来自服务器,而不是非法的第三方,因此引入了数字证书:
Tomcat
java圈子中最知名的http服务器。
下载:
文件目录介绍:
启动tomcat:
在bin目录下,找到该程序:
双击运行:图示代表启动成功
关闭服务器:ctrl + c(直接杀进程),也可以通过bin目录下的shutdown来关闭服务器。
部署一点前端代码感受服务器:
webapps目录下原有的文件夹:
将博客前端代码目录复制到该目录webapps下,启动服务器,在浏览器中访问博客系统: