HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?,‘超’可以理解为除了
HTTP协议:当下最主流的应用层协议之一,你确定不了解一下吗?,‘超’可以理解为除了
一.HTTP协议的含义
http是什么?
405 Method NOT Allowed 方法不被允许 301 永久重定向 302临时重定向 场景:当我们访问某个页面时进行跳转:比如当我们登录一个页面成功后进行页面跳转 响应报文中的location表示要跳转的地址 500服务器错误 服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个 状态码. 咱们平时常用的网站很少会出现 500 (但是偶尔也能看到) 504访问超时 在服务器负载相对较大的情况下,处理单条请求的时间会变长,如果时间过于长,可能出现超时情况 八.通过form表单构造HTTP请求 九.通过ajax构造HTTP请求 Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3] 使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。 [3] 1.关于同步和异步 同步(synchronize):当我们发送请求时,在得到响应之前,我们不能进行其他操作,程序进入阻塞状态 异步(Asynchronous ):当我们发送请求时,在得到响应之前,我们依然可以进行其他操作,当得到响应的时候获取响应并进行下一步操作即可。 2.ajax的实现方式 ①手动调用ajax,这个过程相对比较麻烦,在这里我们不做赘述 ②使用Jquery对ajax进行封装,我们在此进行讲述 2.1引入JQuery的两种方式 ①下载jQuery资源,引用相对路径 ②调用网络上的CDN,调用网络资源 3.使用jQuery实现方法 十.HTTPS协议 HTTPS协议是什么? HTTPS协议也是一个应用层协议,是在HTTP协议的基础上进行了一层加密,这个加密层通常是TLS和SSL HTTP协议是按照明文的协议进行数据传输的,这也就造成了一定的风险:数据在传输过程中存在被篡改的风险: 我们分析以下场景:当我们在网络中下载某个软件,当浏览器弹出下载框时,我们发现弹出来的下载软件并不是自己想下载的软件: 我们分析其中的问题: 正是因为以明文的形式进行数据传输,在获得响应的途中被别有用心的人发现这是一条下载响应,将对应的URL进行替换,来达到下载他自己推广的软件,而这个问题被称作‘运营商劫持’ 所以我们要对传输的数据进行加密。 1.对称加密 何为对称加密? 对称加密其实就是通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文. 引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的 真实内容是啥了. 但事情没这么简单. 服务器同一时刻其实是给很多客户端提供服务的. 这么多客户端, 每个人用的秘钥都 必须是不同的(如果是相同那密钥就太容易扩散了, 黑客就也能拿到了). 因此服务器就需要维护每个客户 端和每个密钥之间的关联关系, 这也是个很麻烦的事情~ 比较理想的做法, 就是能在客户端和服务器建立连接的时候, 双方协商确定这次的密钥是啥~ 但是如果把密钥直接在网络传输中直接以明文传输,那么这个密钥也就是形同虚设了。 所以我们这时引入更安全的加密方式:非对称加密 何为非对称加密? 非对称加密就是存在一把公钥和私钥,对对称加密的密钥进行加密,如果使用公钥进行加密,必须用私钥进行解密,相反,如果用私钥进行加密,就要用公钥进行解密,私钥加密不能私钥解密,公钥同样也是如此。 除此之外,公钥在数据传输过程中由服务器传输给客户端,谁都可以获取,但是没有私钥,公钥也没什么用。这样,客户端服务端在初次加密时使用公钥将对称加密的密码进行加密,服务端用私钥进行解密,并在解开对称加密的密钥之后用这个对称密钥给客户端返回响应。 在后面数据传输的过程中,都使用这个对称加密进行数据传输。 由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密. 但是此时,新的问题又产生了,我们看以下的场景: 那我们又该使用什么策略来判断公钥的真伪呢? 这时引入证书: 在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个证书. 这个证书包含了刚才的公钥, 也包含了网站的身份信息. 这个证书可以理解成是一个结构化的字符串, 里面包含了以下信息: 证书发布机构 证书有效期 公钥 证书所有者 签名 ...... 我们如何判断证书的真伪呢? 1.判断证书是否过期 2.是否是我们所信任的机构颁发的 3.证书的内容是否生效:证书在颁布时存在一个签名:这是一个hash值(通过MD5算法计算),同时证书本身也会生成一个hash值(同样是MD5算法),一旦证书的数据被修改,证书的hash值就会被改变,但是在这个过程中,签名的hash值不会改变,那么我们的验证策略也相对比较简单了:通过比对签名的hash值和整个证书的hash值相比对,一致则有效,不一致则无效。 但是如果黑客把内容改了,也把数据通过md5算法重新计算,并把签名改为这个值,那么我们又该如何验证它的真伪性呢? 其实思路也相对简单:既然签名是一个比对标准值,那么我们让黑客没办法拿到这个标准值进行比对即可:同样引入一对公钥和私钥,对正数签名进行加密:私钥由证书颁发机构持有,不进行网络传输,由于该机构被信任,所以这个公钥在最开始就存在于我们的操作系统,当证书传来的时候,我们使用公钥进行对签名解密,然后再比对判断数据是否有效。 总结: 第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公 钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的 签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过. 第二组(非对称加密):用于协商生成对称加密的密钥. 服务器生成这组私钥-公钥对, 然后通过证书把公钥 传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解 密获取到对称加密密钥. 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密.
评论暂时关闭