网页 url 的绝对路径格式:
http://域名或ip:端口号/应用上下文路径/服务资源路径
网页是存储的服务端,运行的客户端
http原理
什么是 http?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
url格式:
http:
格式:
http协议格式:
http请求:
- 首行: [方法] + [url] + [版本]
- Header: 请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
- Body: 空行后面的内容都是Body.Body允许为空字符串. 如果Body存在, 则在Header中会有 一个Content-Length属性来标识Body的长度;
http响应:
- 首行: [版本号] + [状态码] + [状态码解释]
- Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
- Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.
head头信息
- Content-Type:数据类型(text/html等)
- Content-Length:Body的长度
- Host:客户端告知服务端,所请求的资源是在那个主机的哪个端口上
- User-Agent:声明用户浏览器版本
- referer:当前页面是从页面跳转过来的
- location:搭配 3xx 状态码使用,告诉客户端接下来要去哪里访问
- Cookie:用于在客户端存储少量信息,通常用于实现会话(session)的功能
http的方法
get 和 post 的区别:
get 方法的请求数据只能是 queryString
post 方法的请求数据既可以为 queryString,也可以是body
状态码(常见)
2**
200:成功,操作被成功接受并处理
3**
301(重定向):永久移动。
302(重定向):临时移动。
307(重定向):临时重定向。
304:未修改。所请求的资源未修改,服务返回此状态码,不会返回任何资源。客户端通常会缓存访问过得资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
4**
400:客户端请求的语法错误,服务器无法理解。
401:请求要求用户的身份认证(未登录访问敏感资源)
403:服务器理解请求客户端的请求,但拒绝执行此请求(权限不足)
404:服务器无法根据客户端的请求找到资源。(找不到服务资源),可根据 url 给个部分定位解决。
405:客户端请求中的方法被禁止(提供的服务方法不包含请求方法)
5**
500:服务器内部错误,无法完成请求(一般是服务端程序出现异常)
502:作为王欢或者代理工作的服务器尝试执行请求时,从远程服务器接收到一个无效的响应。
https
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
https是基于http+ssl/tls协议
http明文传输,https是加密后的数据传输,更安全
加密算法:
- 对称加密算法(DES):更安全
加密解密使用响用的私钥 - 非对称加密算法(RSA):效率更高
私钥:客户端和服务端都可以有(自己用),并且可以通过私钥生成公钥,一般是解密
公钥:开放给别人用,一般是解密
https的两种传输方式:
- 单向认证:只有服务端私钥
只验证服务端身份,用户都可以访问 - 双向认证:客户端、服务端都有私钥
用户要验证服务端身份,服务端也要验证用户身份(企业级系统)
原理:
认证/握手阶段的流程:认证身份,以及非对称加密算法生成一个秘钥
真正发送数据的流程:用握手阶段生成的秘钥,对数据使用对称加密算法加密
- 客户端给出协议版本号、一个客户端生成随机数,以及客户端支持的加密方法。
- 服务端确定双方使用的加密方法,并给出 数字证书(服务端信息+公钥)、以及一个服务器生成的随机数。
- 客户端确认数字证书有效,然后生成一个新的随机数,并使用数字证书中的公钥,几米这个随机数,发给服务端。
- 服务端使用自己的私钥,获取客户端发来的随机数。
- 客户端和服务端根据约定的加密方法,使用前面的三个随机数,生成“对话私钥”,用来加密接下来的整个对话过程